1.数据包首部
数据包= 以太网包首部+ip包首部+tcp包首部+数据
其中: ip包首部+tcp包首部+数据的组合是以太网数据
tcp包首部+数据的组合是ip中的数据
数据是tcp中的数据
2. 包、帧、数据报、段、消息 术语区分
包是全能性术语
帧用于表示数据链路层中包的单位
数据报是tcp和udp等网络层以上的分层中包的单位
消息是只应用协议中的数据的单位
3. 以发送邮件为例展示tcpip发送过程
3.1 应用程序处理
启动应用程序新建邮件->填好收件人邮箱->由键盘输入邮件内容->应用程序进行编码处理
->在发送的那一刻建立tcp连接,将应用的数据发送给下一层的tcp
3.2 tcp模块的处理
在应用层数据前添加tcp首部->将附加了tcp首部的包发送给ip
其中,tcp首部包括源端口号、目标端口号(用于识别发送与接收主机上的应用)、序号(用于表示该包中数据是发送端整个数据中第几字节的序列号)、校验和(用于判断数据是否被损坏)
3.3 ip模块的处理
在tcp首部的前端添加ip首部->根据参考路由控制表将ip包发送给连接这些路由器或主机网络接口的驱动程序,实现真正的发送数据
其中,ip首部包括接收端ip地址、发送端ip地址。紧随ip首部的还有用来判断其后面数据是tcp还是udp的信息
若不知道收端MAC,根据ARP查找,然后将MAC地址和IP地址交给以太网的驱动程序,实现数据传输
3.4 网络接口(以太网驱动)的处理
给数据附加以太网首部->进行发送处理,通过物理层传输给接收端
其中,以太网首部包含接收端MAC、发送端MAC、标志以太网类型的以太网数据的协议
发送处理中的FCS由硬件进行计算,添加到包的最后
4.数据包接收过程
4.1 网络接口(以太网驱动)的处理
主机接收到以太网包->从以太网首部找到MAC地址判断是否是发送给自己的包->如果不是就丢弃,如果是查找以太网包首部中的类型域确定以太网协议传送过来的数据类型(上一层协议类型)。->此处为ip包,于是将数据传给ip模块
4.2 ip模块的处理
若数据包中的ip地址与自己的匹配,则接收数据并查找上一次协议,此处为tcp,于是交给tcp模块进行处理
4.3 tcp模块的处理
计算校验和,判断数据是否被破坏->检查是否在按序号接收数据->检查端口号,确定具体的应用程序->数据接收完毕后接收端发送一个确认回执的信息到发送端,并把完整的数据传给由端口号识别的应用程序
发送端未收到回执会一直重传
4.4 应用程序的处理
解析数据,发现收件人地址是乙的地址,若主机上没有乙的邮箱,则返回给发送端“无此收件地址”,若有则“处理正常”
然后乙打开邮箱后就可以看到内容啦