本文根据华为数据通信课程,做的笔记。
可以在 B站 华为数据通信官方账号下观看对应课程。
https://www.bilibili.com/video/BV1WV411U7L4
三次握手:
A发送SYN给B,通知B建立连接。
B回复A,OK。
这时候A收到B的回复,表示A已经知道B是收到了A想建立连接的消息了。但是此时B是不知道A是否收到B发出想建立连接的消息。所以需要第三次握手。
A发送 seq=1是因为自己上一条发出的消息seq=0,所以+1, ack=1 是回复B的seq=0的消息,所以+1。
1、A同时B要断开连接。
2、B发送ACK给A,避免A没有收到消息,一直发送请求断开连接的消息。
3、B处理完数据后,发送FIN 和ACK给A。请求断开连接。
4、A给B发送ACK。这样B才能确认A收到自己要断开连接的请求。
第一步构造数据
第二步,数据传送给了传输层,传输层添加了头部信息,端口号。
第三步,补充IP头信息。
第四步,补充MAC地址。一开始没有MAC地址时,通过广播获得。
类型 0x0800 表示后面是IPV4的报文。
第五步,通过MAC地址找到要发送给R1,于是将二进制的数据传输给R1。
检查帧头的MAC地址是自己。
拆开帧头,看到IP不是自己。于是查找路由表。
把源MAC地址修改为自己 的MAC地址,将R2的MAC设置为目标MAC地址。
同样的,R2路由器拆开帧头,看到IP地址是自己直连机器。于是通过路由表找到对应ip的MAC地址,设置为目标MAC。将数据发送出去。
Server收到消息,确认目标MAC是自己。
检查IP地址是自己。
看到端口是80,于是检查自己机器的80端口是开放的。
于是将DATA数据交给监听80端口的程序去处理。