TCP/IP协议

180 阅读2分钟

TCP/IP协议

计算机网络体系结构分层

image.png

Tcp协议的特点

  • Tcp是面向连接的协议
  • Tcp的一个连接有两端(点对点通信)
  • Tcp提供可靠的传输服务
  • Tcp提供全双工的通信
  • Tcp是面向字节流的协议

Tcp协议的详解

序号: tcp协议是面向字节流的协议,一个字节一个序号

确认号:期望收到数据的首字节序号,确认号为N则表示N-1序号的数据已经收到

数据偏移:数据偏离首部的距离

tcp标记:

标记含义
URGUrgent:紧急位,URG=1,表示紧急数据
ACKAcknowledgement:确认位,ACK=1,确认号才生效
PSHPush:推送位,PSH=1,尽快地把数据交付给应用层
RSTReset:重置位,RST=1,重新建立连接
SYNSynchronization:同步位,SYN=1表示连接请求报文
FINFinish:终止位,FIN=1 表示释放连接

窗口:允许对方发送的数据量

可靠传输的基本原理

停止等待协议:

发生的情况:

  • 发送的消息在路上丢失了
  • 确认的消息在路上丢失了
  • 确认的消息很久才到

解决的方法:

每发送一个消息,设置一个定时器(超时定时器)

连续ARQ协议(自动重传请求)

Tcp的三次握手

代表含义解释:

SYN:连接请求报文

ACK: 确认位

seq:序号

ack:确认号

流程:

  • 发送方发送标志位SYN=1的包请求连接,并且设置序号为X
  • 接受方收到tcp包,发送标志位SYN=1的包建立连接,ACK置为1代表确认收到,序号为y(代表发送的字节标识),确认号为x+1(期望下次收到数据的位置为x+1)
  • 接受方发送tcp包ACK=1(标识收到接受方的数据)序号为x+1(代表此次数据的起始为x+1)确认号为y+1(代表希望下次的数据是y+1开头的数据)

为什么是三次握手而不是两次

已经失效的连接请求报文到达对方,引起错误

不支持在 Docs 外粘贴 block

流程解释:

  • 发送方发送第一个请求包延时
  • 发送方发送第二个请求包,接受方收到请求包,并且进行回复
  • 发送方进行第三次握手,连接建立
  • 重点:接受方收到第一个请求包并且进行回复,这时发送方发现连接已经建立了,对于第一个请求包的回复进行忽略,避免了错误

Tcp四次挥手