计算机网络--传输层--TCP协议--原理详解

计算机网络–传输层–TCP协议-- 原理详解

TCP/IP协议族组成

计算机网络--传输层--TCP协议--原理详解
**传输层作用:传输层提供端到端的连接
网络层提供点到点的连接 **

传输层协议:

计算机网络--传输层--TCP协议--原理详解

TCP报文段–5行20字节

计算机网络--传输层--TCP协议--原理详解
TCP报文封装在IP里
TCP头部20个字节(5行32位)
确认号:对方的seq+1—序号+确认号可以防止重放攻击
窗口大小(滑动窗口):流量控制

难点–六大控制位—只能是1或0
六大控制位:URG/ACK/PSH/RST/SYN/FIN
URG:置1时 表示在网络中优先传输,可以插队
ACK:置1时 一个确认动作(有确认动作就有确认号)
PSH:置1时 推送位,提醒接收方将数据推给上层
RST:置1时 重置位,防止TCP非正常关闭。(TCP连接异常,从而提醒对方关闭TCP非正常连接)
SYN:置1时 对方发起连接–我给一个回复(确认控制位)ack
FIN: 置1时 其中一方向对方发起断开请求—是TCP的断开控制位

计算机网络--传输层--TCP协议--原理详解

底层----下三层 物理层、数据链路层、网络层

常用端口

计算机网络--传输层--TCP协议--原理详解
1024及以上为随机端口
公认TCP端口
FTP–21 Telnet—23 SMTP–25

套接字 sockets:由发送端和接收端构成

计算机网络--传输层--TCP协议--原理详解
服务器和客户机构成的连接称为套接字

TCP的三次握手

计算机网络--传输层--TCP协议--原理详解
了解哪一步什么位置1 哪一步什么位加1-----3次握手因为没有数据传输
seq为本机随机产生的一个编号,ctl为控制位,当HostA请求连接HostB时发出请求连接,SYN置1,HostB收到请求后同意连接,并也向HostA发出同样的连接请求,所以HostB向A回复确认号ACK后控制位SYN同样值1

TCP的四次断开

计算机网络--传输层--TCP协议--原理详解
4次断开是考虑有数据传输 计算机是全双工
(1. A在发最后一次数据时数据中携带请求断开连接的控制位FIN,并给B上次发的数据做一个确认ACK;
(2. B在收到请求后给出确认ACK置1,此时主机B不会立马向A发FIN断开连接,而是要等一段时间确保本机也没有数据向A发送后在向A发FIN;
(3. 主机B数据发送完毕才向A发FIN;
(4. 主机A收到B的FIN后给出确认号ACK,同意断开连接,此时两台主机才完全断开连接;

三次握手的控制位:
第一步:SYN
第二步:SYN ACK
第三步:ACK
四次断开的控制位:
第一步:FIN ACK
第二步:ACK
第三步:ACK FIN
第四步:ACK
TCP的流控机
做确认时 确认号(ack)是对方的***(seq)+1

TCP的流控机制----滑动窗口

计算机网络--传输层--TCP协议--原理详解
知道对方win=3,就可以连续发三个数据包过去
缓冲区为0时,会发一个win值为0的确认(提示对方我的仓库满了)—当数据向上层传送后,win值为非0时,会发win=1

TCP的流控机制----拥塞控制

计算机网络--传输层--TCP协议--原理详解
当发送方发10个数据,对方全接收 ,对方发的确认号会是11,表示全接收----如果对方确认号发的是6,表示对方的带宽只能接受5个,双方就会协商出Cwnd=5。
计算机网络--传输层--TCP协议--原理详解
对方宣告win值为3 我就会批量性的发3个数据–对方只给我一个数据做了确认 Cwnd=1

TCP的差错控制

计算机网络--传输层--TCP协议--原理详解
TCP的接收方是按序接收,没接到1不会向2做确认
能够通过确认让接收方知道数据是受损、丢失、按序接受、第三方复制还是重复等等

四大计时器

1.重传计数器–为了控制丢失的数据段===主机A向B发送的每个数据都会绑定一个计时器,发送数据后立马开启计时器,在计时器超时前,收到数据了,计时器关闭。计时器超时了还没收到数据(发送的数据丢失或者确认号丢失),重发数据,计时器复位。
计算机网络--传输层--TCP协议--原理详解
2.坚持计时器–为了防止零窗口死锁 与win值有关(win值与缓冲器大小有关,会变)
零窗口死锁:当主机B发的确认号丢失,两主机并不知道。A在等B 的非0确认号,B在等A的数据,双方都在等。
坚持计时器:就算超时,会发探测数据段看是否出现零窗口死锁
坚持计时器超时前,收到win值为非0就会批量性发送数据
3.保活计时器-防止两个TCP之间的连接长时间的空闲
**时间:一旦TCP连接建立开启保活计时器—超时之内发送数据了就不会断开,超时之后会发10个探测包还没有相应就会断开连接

计算机网络--传输层--TCP协议--原理详解
4.时间等待计时器–连接终止期间使用的
**时间:在发送最后一个ACK后立马启动,且足以保障FIN能重发

计算机网络--传输层--TCP协议--原理详解
在发送了最后一个ACK后,不立即关闭连接,要等待一段时间,保证接收方能收到重复的FIN数据段—只有普通数据能重发,ACK不能重发

TCP可靠手段:

TCP面向连接,提供可靠性传输
seq+ack 防重放攻击
6个控制位
流控机制
拥塞控制机制
超时控制器
校验和
PS:数据能重传,但ACK不能重传

TCP应用

计算机网络--传输层--TCP协议--原理详解
Telnet :远程控制 明文
ssh:远程控制 密文
DNS:UDP 53端口,数据同步用到TCP的53端口