美文网首页
TCP与UDP协议

TCP与UDP协议

作者: 做梦枯岛醒 | 来源:发表于2019-03-28 19:37 被阅读0次

1.对TCP与UDP的认知

TCP和UDP虽同作为OSI的传输层协议,但应用场景却不同(感觉是句废话),综合来看,TCP得益于可靠的传输机制,多应用于不允许丢包的场景,而UDP多用于视频等允许丢包的环境下。

首先要解决一个重要的问题,那就是TCP/IP和UDP什么关系?

说起这个来,很多人以为TCP/IP就是TCP和IP的组合的名称,但其实TCP/IP协议是一个协议簇,里面包括很多协议的,UDP只是其中的一个(可能是当时TCP表现优异,然后UDP灰溜溜顿角落去了,哈哈哈),所以以后不要在这里闹了笑话。TCP/IP可以分为四层,分别是 网络接口层(也称链路层,可以理解为OSI物理层和数据链路层的结合),网络层,传输层,应用层,所以理解TCP/IP协议也就同时理解了好多内容。

1.1 TCP的特点

对于TCP,抓住一个重点就是可靠传输。
对于可靠传输,我们就要建立端到端面向连接的数据通路,要可靠,就要做到数据 无差错,不丢失,不重复,有序,同时TCP是面向字节流的。

我们联想一个下载文件的场景,下载文件过程绝不允许丢包,同时文件的字节流数据块一定要按照顺序来排列,否则文件就会产生错误,假如说发送端发送文件资源过快,接收端处理不过来,就会产生TCP拥塞控制,假如说传输过程中发生了丢包,接收端没收到就会通知发送端重发(重传机制

1.2 UDP的特点

对于UDP,我们就应该想到非可靠传输。
对于非可靠传输,我们就不需要建立端对端的链接,只需要填好IP扔出去即可,类似于一个快递,最终对方能不能收到,这得看运输车有没有在高速上着火啦。UDP是尽最大努力交付,可能有丢失,UDP是面向报文的,报文可能无序。(注意:UDP报文不可分割,而TCP会去除首部)

我们想象一个视频电话的场景,视频过程中允许卡顿,并且没有拥塞控制,并且没有重传机制,你想如果有了这些功能的话,你的视频电话会变成啥样子?

2. 报文结构

要了解TCP与UDP相关“几洗”,必须要了解他们的报文结构,其中UDP的报文结构比较简单,TCP的报文结构比较复杂。

2.1 UDP报文

上图是UDP的报文结构,UDP首部是8个字节,分为4个段,每段2个字节(16bit)。
首先0-15 是 源端口号
16- 31 是目标端口号
下面是UDP长度:包括首部和数据,最小就是没数据的时候的8byte
最后是UDP校验和:可选字段,想校验的话,就填入校验和,不想校验就填0。

2.2 TCP报文

看这个图,就会觉得TCP复杂的多,这也是由于它的各种特殊功能决定的。

首先可以看到TCP首部是 20 字节的固定首部 + 长度可变的部分组成+填充

  1. 首先 是 源端口目标端口 各占两个字节
  2. 第二行是序号(seq),序号占了4个字节,也就是32位,那么很显然序号的范围是0到2的32次方-1,序号这个东西对应的功能是顺序传送,接收端收到会按照序号来排列分段,序号最多可以对4GB的数据编号,当序号到达最大值的时候,会置0,这不会影响新的一轮编号的。
  3. 第三行是确认号(ack),占4字节,是期望收到对方下一个报文段的第一个数据字节的序号,若确认号是N,则表明:到序号N-1为止的所有数据都已正确收到。
  4. 数据偏移:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。【这么高深?说白了就说TCP首部有多长呗,再说白了就是 20 + 长度可变 + 填充 = ?】
  5. 保留? 保留就是现在没啥用,以后可能有用吧,但也可能永远都没有,替这个字段心塞。
  6. 下面是几个标志,各自有各自的功能
  • URG(紧急位):URG = 1 表示紧急位指针字段有效(可以看到在下面一行,有一个紧急指针字段),他告诉系统,此报文中有紧急数据,需要尽快传送。紧急指针中放了一个数字x,标志着TCP报文段数据部分 0 ~ x 位是紧急数据。
  • ACK(确认位):ACK = 1时确认号有效,这也是我们所讲的TCP三次握手中,为什么ack填写了,还要填写ACK的原因了。
  • PSH(推送位):接收端接受到PSH = 1的报文,就尽快交给应用,而不必等到缓存满了才交付。
  • RST(复位位):RST = 1时,表明此次TCP链接发生了严重差错,需要释放链接,重新建立新的链接。
  • SYN (同步位) : 同步位这个字段在TCP三次握手中见到过,当 SYN = 1,ACK = 0时,表明是一个连接请求报文,对方若同意时,则应在响应的报文段中使SYN=1和ACK=1,这个可以参考三次握手分析图。
  • FIN (终止位) :用来释放一个连接,当FIN=1时,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。在四次挥手中有用到这个。
  1. 窗口,占2个字节,窗口指的是发送本报文段的一方的接收窗口,不是自己的发送窗口,告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。窗口值作为接受方让发送方设置其发送窗口的依据。

  2. 校验和,占2字节。校验和字段检验的范围包括首部和数据这两部分。

  3. 紧急指针,刚才提过,它指出本报文段中的紧急数据的字节数。

  4. 选项:长度可变,最长可达40字节,当没有选项时,TCP的首部长度是20字节。

  5. 填充,补齐位,保证每行32位

3. TCP 技术

3.1 TCP三次握手与四次挥手

相关文章

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • tcp和udp

    TCP和UDP的区别(转) TCP****协议与UDP协议的区别 首先咱们弄清楚, TCP 协议和 UCP ...

  • TCP/IP协议,TCP、UDP区别与联系

    TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了, 一...

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • TCP和UDP协议

    TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了,一直...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • TCP和UDP的区别(转)

    TCP协议与UDP协议的区别首先咱们弄清楚,****TCP****协议和****UCP****协议与****TCP...

  • iOS面试:网络通信概念

    TCP与UDP TCP和UDP都是传输层的协议: TCP是传输控制层协议,是面向连接、可靠的,点对点的;UDP是用...

  • TCP和UDP的区别

    趁这今天,忙里偷闲的温习一下TCP和UDP TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与...

  • TCP协议知识盘点

    首先需要回顾:TCP与UDP的区别、差异、以及应用场景 TCP对应的协议和UDP对应的协议 TCP对应的协议:(1...

网友评论

      本文标题:TCP与UDP协议

      本文链接:https://www.haomeiwen.com/subject/ajvzvqtx.html