TCP/UDP协议详解

1、TCP/UDP不同点:
TCP

  • 面向连接
  • 一个连接只能是点对点(端对端、一对一)的连接
  • 提供可靠交付
  • 全双工通信
  • 面向字节流的(发送的是TCP数据报,但是是以字节序列的形式流入或流出进程)
  • TCP不管应用程序进程一次把多少报文数据发送到TCP发送缓冲区中,而是根据接收方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节
  • TCP连接的端点是套接字:IP地址:端口(同一个端口会被不同的进程复用)

UDP

  • 无连接
  • 尽最大努力交付
  • 面向报文段(太长:IP层分割,太短:IP层效率低)
  • 没有拥塞控制
  • UDP支持一对一、一对多、多对一、多对多连接
  • UDP首部开销小,只有8字节

TCP报文首部格式
在这里插入图片描述
TCP报文段首部的前20个字节是固定的,后面有4n个字节是根据需要而增加的选项,因此TCP首部的最小长度是20字节

**源端口和目的端口:**各占两个字节,分别写入源端口号和目的端口号

**序号:**占4个字节,序号范围是[0,2的32次方-1],序号增加到2的32次方后,下一个序号又回到0,在一个TCP连接中传送的字节流中的每一个字节流都按顺序编号,首部中的序号字段值是指本报文段所发送的数据的第一个字节的序号,例如,一报文段的序号字段值是301,而携带的数据长度是100字节,这就表明:本报文段的数据的第一个字节的序号是301,最后一个字节的序号是400

**确认号:**占4字节,是期望收到对方下一个报文段的第一个数据字节的序号,例如,B正确收到A发送过来的一个报文段,其序号值是501,而数据长度是200字节,这表明B正确收到了A发送的到序号700为止的数据,因此B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文中把确认号设置为701

**数据偏移:**占4位,它指出TCP报文段的数据起始处距离TCP报文的起始段有多远,实际上是指出TCP报文段的首部长度,数据偏移的单位是32位(即4字节),4位二进制表示的最大数是15,因此TCP首部长度最大是4*15=60字节

**确认ACK:**仅当ACK=1时确认号字段才有效,TCP规定,在连接建立后所有传送的报文段都必须把ACK置1

**推送PSH:**当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应,在这种情况下,TCP就可以使用推送(push)操作

**同步SYN:**在连接建立时用来同步序号,当SYN=1而ACK=0时,表明这是一个连接请求报文段,对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1,

**终止FIN:**用来释放一个连接,当FIN=1时,表明此报文段的发送方的数据已经发送完毕,应要求释放运输连接

**窗口:**占2字节,窗口值是[0,2的16次方-1]之间的整数,窗口指的是发送本报文段的一方的接收窗口,窗口值告诉对方:从本报文段首部的确认号算起,接收方目前允许对方发送的数据量(以字节为单位),之所以要有这个限制,是因为接收方的数据缓存空间是有限的

TCP的可靠传输
TCP的可靠传输以字节为单位的滑动窗口实现,发送窗口里的序号表示允许发送的序号
TCP在规定的时间没有收到确认就要重传已发送的报文段,TCP采用了一种自适应算法,它记录衣蛾报文段发出的时间,以及收到相应的确认时间,这两个时间只差就是报文段的往返时间RTT

TCP的流量控制
利用滑动窗口实现流量控制
在这里插入图片描述

TCP的拥塞控制
在这里插入图片描述
TCP的拥塞控制方法
TCP进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传和快恢复

TCP的运输连接管理
运输连接有三个阶段,即:连接建立、数据传送和连接释放
TCP的连接建立
在这里插入图片描述
假定主机A运行的是TCP客户程序,而B运行TCP服务器程序,最初两端的TCP进程都处于CLOSED(关闭)状态,图中在主机下面的方框分别是TCP进程所处的状态
一开始,B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,人后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求,如有,即作出响应
A的TCP客户进程也是首先创建传输控制模块TCB,然后,在打算建立TCP连接时,向B发出连接请求报文段,这时首部中的同部位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗掉一个序号,这时,TCP客户进程进入SYN-SENT(同步已发送)状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值