目录
TCP概念
TCP:Transmission Control Protocol
目标:process to process 进程到进程
保障可靠性,但不是保证安全性
什么是可靠性?
1. TCP会尽自己所能,尽量将数据发送给对方;但并不能保证100%可以发给对方。2. TCP会在数据发送不给对方的情况下,给应用层一个错误通知。
应用层发送数据,要么发送给对方了,要么会知道数据丢失了。3. TCP可以保障接收方(应用层)严格按照发送时的数据顺序接收。
4. TCP保障数据不会出现无意间地损坏(UDP也做到这一点了)。
5. TCP尽可能的在维护网络质量。
TCP提供的机制(保障可靠性)
关于编号
TCP Segment的两种角色
关于重传
出现了丢包,如何进行重传?
快重传
当某一段报文段丢失之后,发送端会一直收到 1001 这样的ACK,就像是在提醒发送端 "我想
要的是 1001" 一样;
如果发送端主机连续三次收到了同样一个 "1001" 这样的应答,就会将对应的数据 1001 -
2000 重新发送;
这个时候接收端收到了 1001 之后,再次返回的ACK就是7001了(因为2001 - 7000)接收端
其实之前就已经收到了,被放到了接收端操作系统内核的接收缓冲区中;
这种机制被称为 "高速重发控制"(也叫 "快重传")。
超时时间
TCP的Header
TCP的缓冲区
TCP的连接
TCP连接(Connection)的概念,以及连接管理
(一条连接的一生 = 一开始的创建+正式使用+销毁)
三次握手
syn ack标志位
完整的三次握手
Wireshark抓包工具,演示TCP三次握手
4位头部长度(header length)
由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*4= 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
三次握手状态转移
三次握手小结
四次挥手阶段
标志位:(FIN) Final/Finish
主动挥手方:主动断开连接的一方
被动挥手方:被动断开连接的一方
同时关闭:双方都是主动挥手方
主动挥手方一定是主动连接方?否!(主动提分手的不一定是当时主动追求的人)
四次挥手状态变化
![]()
CLOSE_WAIT状态
TIME_WAIT状态
![]()
为何保留?
为何保留的示例
大量TIME_WAIT出现的现象
四次挥手小结
TCP中的异常情况
情况一
情况二
情况三
情况四
OS是硬件还是软件?
OS是软件。
软件就是程序,就是数据+指令就是要运行在CPU上指令,以及这些指令要处理的数据。
解决死链接的机制
通过命令行命令可以查看主机上的TCP连接情况(了解)
流量控制
流量控制
1. 需要知道对方的接收能力,最好是实时的感知到。
2. 拿到对方的接收能力->发送流量
3. 通过什么机制来控制发送量
1. 知道对象的接收能力
2. 拿到对方的接收能力
3. 控制发送量——滑动窗口机制
着重说明情况2
着重说明情况2