在通信领域,通信设备(例如手机、计算机等)将消息(message)封装(encapsulate)到数据包(packet)中再发送给对方,而不是直接将消息发送给对方。
图1:封装在数据包中的一条消息
类似于我们寄信的时候,将写好的信纸放入信封,而不是将信纸直接放入邮筒。
信封上有寄信人地址和收信人地址,类似地,数据包上有发送方地址和接收方地址。
数据包是在网络上传输的,网络上的地址称作IP address(Internet Protocol address)。
图2:数据包中包含IP地址
source IP address(源IP address)是发送方的地址
destination IP address(目的IP address)是接收方的地址
网络根据source IP address就可以知道是网络上的哪一台通信设备(例如手机、计算机等)发送的消息,根据destination IP address就可以知道消息是发往网络上的哪一台通信设备。
例如,IP address是这样的:202.108.22.6(由4个数和3个点组成)
数据包上除了有发送方和接收方的地址外,还有端口号(port number)。
图3:数据包中包含端口号
作为非专业技术人员,我们只需要大致知道:端口号是一个整数,不同的端口号代表不同的应用程序。
source port number(源端口号)类似于信件的寄信人姓名
destination port number(目的端口号)类似于信件的收信人姓名
一个消息不仅可以是一段文字,还可以是一张照片、一条语音、一个视频等等。
数据包的大小一般是固定的。如果消息比较小,用一个数据包就可以装下。如果消息比较大,则要把消息拆分,放入多个数据包进行发送。因此,数据包上还有序号(sequence number)。
图4:数据包中包含序号
接收方收到多个数据包后,根据数据包中的序号,把这些数据包内的消息片段重新组合成一条完整的消息。
因为数据包的大小一般是固定的,所以,如果消息比较小,则需要对数据包的空余区域进行填充(padding),也就是用没有意义的数据把数据包填满,类似于我们寄快递时,东西比较小的时候,会塞入废纸把快递盒填满。
图5:“#”表示用于进行padding的无意义数据
数据包中,souce IP address、destination IP address、source port number、destination port number 和sequence number都称为数据包中的字段(field)。这些字段共同组成数据包的包头(header)。
*以上内容是为了帮助译员了解基本的概念和术语,因此省略了很多复杂的技术细节,谢谢!
参考:
Behrouz A. Forouzan著. Data Communications and Networking (数据通信与网络,英文版第5版). 北京:机械工业出版社
https://tools.ietf.org/html/rfc4717
https://jvns.ca/blog/2017/02/07/mtu/
领取专属 10元无门槛券
私享最新 技术干货