TCP/IP基础知识——TCP/IP通信示例

1、数据包首部:

        包:全能性术语。

        帧:数据链路层中包的单位。

        数据报:IP和UDP等网络层以上的分层中包的单位。

        段:TCP数据流中的信息。

        消息:应用协议中数据的单位。

2、发送数据包:

        应用程序处理:应用程序中会进行编码。

        TCP模板的处理:在应用层数据的前端附加一个TCP首部。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以表示该包中数据是发送端整个数据中的第几字节的序列号)以及校验和(用以判断数据是否被损坏)。

        IP模块的处理:在TCP首部的前端加上自己的IP首部。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。

        网络接口(以太网驱动)的处理:在IP首部的前端加上以太网首部并进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。发送处理中的FCS由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。

3、经过数据链路的包:

        以太网会用MAC地址,IP会用IP地址,而TCP/UDP则会用端口号作为识别两端主机的地址。此外,每个分层的包首部中还包含一个识别位,它是用来标识上一层协议的种类信息。

4、数据包接收处理:

        网络接口(以太网驱动)的处理:首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是则丢弃数据。如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据。

        IP模块的处理:如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。对于有路由器的情况下,接收端地址往往不是自己的地址,此外,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。

        TCP模块的处理:首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。数据被完整地接收以后,会传给由端口号识别的应用程序。

        应用程序的处理:接收端应用程序会直接接收发送端发送的数据,通过解析数据进行展示。

猜你喜欢

转载自blog.csdn.net/qq_38386085/article/details/119485958