networks, packets, and protocols

网络是由通过通信信道(communication channel)连接的电脑组成的,我们称这些电脑为hostrouter(or gateway)
host是运行实际应用程序的电脑,也就是网络中用户使用的电脑。
router是在信道间转接或传递信息的电脑。使用router是由于直接将要通信的host电脑进行连接并不切合实际
communication channel则是将一组有序字节从一台host传到另一台的方式,可以是有线(eg. Ethernet),或无线(eg. WiFi)

网络间传递的有序字节数据又被称为packetpacket中除了包含用户想传递的数据外还有一些控制信息, 比如目标位置。

protocol则是关于packet结构定义及相关数据如何解析的一些协议。 通常不同的protocol用于解决不同的实际问题。TCP/IP则是一组相关协议的总称,又被称为协议族
其中的主要协议有:IP(Internet Protocol), TCP(Transmission Control Protocol), UDP(User Datagram Protocol)

通常由host的操作系统提供TCP, UDP服务,然后host上的程序通过Socket API调用这些服务实现通信
IP则负责将实际的packet从一台host传到另一台host,为了实现传递,packet中必须包含目标的addressIP只负责传递packet,但有可能发生丢包,错序,重复等情况。

IP只负责host to hostpacket传递,所以在其基础上还需使用transport layer的协议,即TCPUDP等。 TCPUDP通过使用port number来区分同一host上的不同应用连接,从而实现从一个程序与另一个程序的通信

TCP会检测IP传输中出现的丢包等错误并尝试修复,而UDP则不做任何处理

address

TCP/IP中通信地址由两部分组成,IP使用的internet address,和传输层(TCP or UDP)使用的port number

IP address

IP address由二进制数组成,IPv44 bytes, 32 bits组成,而IPv616 bytes, 128 bits组成。
为了人类辨认,IPv4通常写成4个由.分隔的十进制数,每个数包含8 bits的地址,所以每个数的取值范围为0-255
IPv6则由8个以:分隔的十六进制数组成。

一台host可以同时拥有多个IP address,且可以同时用于IPv4IPv6

port number

port number16 bits二进制数组成,通常用十进制表示(1-65535, 0为保留端口)

special address

  • loopback
    IPv4(127.0.0.1), IPv6(::1)
  • private
    IPv410,192.168开头,以及172开头且第二个数字在16~31之间的地址
  • link-local
    IPv4169.254开头的地址
  • multicast
    IPv4中第一个数字在224~239之间的地址

Name

通过映射关系将hostnameIP address进行配对, 然后通过DNS(Domain Name System)local configuration database进行解析

client and server

client发起通信连接请求,所以client端必须知道server端的address,而server端不用知道client端。 一旦通信连接建立后,clientserver则没有本质的区别了。

通常知道网络中的serverIP address比较简单(通常是知道domain然后让DNS解析),但却无法知道port number。 通常不同协议有不同的默认端口,当我们省略时则可以会自动使用这些端口。
Internet Assigned Number Authority 组织会管理这些默认端口的使用

socket

与可以用来读写文件的文件句柄类似,socket用于读写在不同host间传递的数据。 一台host上写入socket的数据可以被另一台host读取

socket, protocol, port