TCP/IP
在多个不同网络间实现信息传输的协议簇
TCP/IP的五层结构
以定义数据格式和解决传输问题角度进行抽象的分层
应用层:应用层定义从端口获取到程序中的数据格式并解读和返回数据
传输层:传输层的主要工作是定义端口,实现端口到端口的通信
网络层:定义IP地址和子网,并对于不同子网的数据包进行路由
链路层:对电信号进行分组并形成具有特定意义的数据帧
物理层:接口规格,信号电平,IEEE 802.1定义传送频率,帧结构
IP协议的报头
TTL(Time To Live), 该字段表示IP报文被
路由器丢弃之前可经过的最多路由总数
TTL由操作系统设置,64到255之间不等。
TCP的报头
SYN: (Synchronize Sequence Numbers) 用作建立连接时的同步信号。
ACK: (Acknowledgement)用于对收到的指令和数据进行确认。
FIN:(Finish)表示后面没有需要发送的数 据,请求关闭。
TCP的三次握手
TCP共有10种实际存在的状态。
建立连接有4种: LISTENING / SYN_SENT / SYN_RECEIVED ESTABLISHED
断开连接有8种: ESTABLISHED / FIN_WAIT_1 / FIN_WAIT_2 / CLOSE_WAIT / LAST_ACK / TIME_WAIT / CLOSING LISTENING
重复的是 ESTABLISHED / LISTENING 两种状态
以源目的IP+端口号为KEY,状态为VALUE,存储 在操作系统中
为什么需要第 3 次握手
1.信息对等
2.防止超时
TCP的四次挥手
第一次:A机器传递 FIN 信号给 B 机器。
第二次:B 机器应答 ACK,告诉 A 机器可以断开
第三次:B 机器做好连接关闭前的准备工作后,发送 FIN+ACK给 A 机器
第四次:A发送ACK 后, 进入 TIME-WAIT 状态
经过 2MSL(Maximum Segment Lifetime)后,通常大 于TTL,没有收到 B 机器传来的报文,则确定 B 机器 已经收到 A 机器最后发送的 ACK 指令,此时 TCP 连接正式释放。