TCP与UDP

TCP和UDP同属于运输层,在OSI体系中还有处于第四层。


UDP和TCP特点

  • 用户数据报协议UDP(User Datagram Protocol) 是无连接的,尽最大可能交付,无阻塞控制,面向报文。
  • 传输控制协议TCP(_Transmission Control Protocol) 是面向连接的,安全可靠交付,有流量控制,阻塞控制,面向细节流。

UDP格式


UDP首部字段有8个字节,包括源端口,目的端口,长度,检验和,12个字节的伪首部是为了检验和。

TCP 首部格式


  • 序号:用于对字节流进行编号,例如序号为100,表示第一个字节的编号100,如果携带的数据长度为100,那么下一个报文段序号为201;
  • 确认号:期望收到的下一个报文段的序号。例如B已经收到来自A发送报文段,序号200,携带数据长度为100,因此B希望下一个报文段序号为301,B发送给A确认号为301
  • 数据偏移:指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。(不太理解)
  • 确认ACK:当ACK = 1时确认号字段有效,否则无效。
  • 同步SYN:用来同步序号,当SYN = 1时,ACK = 0时表示这是一个连接请求报文段,若对方同意=建立连接时,响应报文中SYN = 1,ACK= 1;
  • 终止FIN:用来释放一个连接,当FIN = 1时,表示发送方数据已经发送完毕,并要求对方释放运输连接。
  • 窗口:窗口值作为接收方让发送方设置发送窗口,这是为什么了,因为接收方的数据缓存是有限的。

TCP三次握手

假设A为客户端,B为服务端

1,首先B处于LISTEN监听状态,等待客户的连接请求。

2,A客户端向B发送请求报文段,SYN = 1,ACK = 0,初始化一个序号SEQ = X;

3, 不收到连接的请求报文段,如果同意连接,则向A发送确认报文段 ,SYN= 1,ACK = 1,确认号为 x+1,在初始化一个序号Y.

4, A收到B的连接确认报后,还要向B发出确认,确认号为y+1,序号为x+1,进入 TIME-WAIT 状态。

5,B收到A的确认后,建立连接。


4次握手


TCP滑动窗口


窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。

发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。

接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 32, 34, 35},其中 {31, 32} 按序到达,而 {34, 35} 就不是,因此只对字节 32 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

TCP 可靠传输

TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段


TCP 流量控制

流量控制是为了控制发送方发送速率,保证接收方来得及接收。

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

TCP 拥塞控制

如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。流量控制是为了让接收方能来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值