网络小结(2)——TCP/UDP

正文

1. TCP与UDP:

在网络体系结构中我们提过TCP/IP的四层网络层级:


image.png

而TCP(Transmisson Control Protocol,即传输控制协议)和UDP(User Datagram Protocol 即用户数据报协议)是在传输层的,所以我们知道UDP和TCP是用来传输数据的一种协议,为主机中不同进程提供通信,那既然是传输数据,我们举例以快递盒寄信的逻辑来说明。

TCP像快递,寄快递现在都有物流信息,最后是否签收了我的快递。如果丢件也会通知给你反馈。而UDP更像寄信,收不收得到我也不管。

对比与UDP,TCP的传输是可靠的、无差错的。

1.1 TCP通道的连接及断开

既然数据是从一个地方到另一个地方,我们要先建立一个通道,这样数据才能传输流动。

TCP三次握手,四次挥手,这个就是用来建立这个通道及断开通道。

三次握手:

  1. A发信息给B:你在不在啊?急事!!
  2. B发信息给A:我在啊,急事?那你快告诉我,我这边时刻听着你说。

不幸的是A这时候拉肚子,只能马上跑去厕所了,然后一拉就是半个小时,然后B就一直等了半个小时。

这时候你是不是发现了二次握手的问题了,如果第二次B发送给A的话后,A没有马上回相应的信息给B,B就可以认为A已经不在了,从而不再等它,也不建立通道。

所以应该是这样:

  1. A发信息给B:你在不在啊?急事!!
  2. B发信息给A:我在啊,急事?那你快告诉我,我这边时刻听着你说。
  3. A发信息给B:事情是这样的。你听我慢慢道来。
    balabala.......
    balabala.......
    balabala.......

然后A和B之间的通道就通了,然后A这时候可以给B不停的发信息了。

然后有人会问,TCP 又不会拉肚子,那TCP为啥要三次,因为如果规定二次的话: A 发给B信息,申请建立通道,因为网络延迟,B一直没收到,这时候A等的不耐烦了,直接就退出了,但是过了一会儿B收到了这个信息,B以为A是刚发的请求,所以建立了通道,但是A其实早就已经不在了。这样防止B形成死锁、浪费资源等。

当然上面是我们举得例子,具体肯定是通过一些值来传递:具体的图是这样的:

image.png
image.png

四次挥手

我们知道TCP连接之后我们可以互相之间发消息了,这里假设通道里包含了两个小通道,一个是A发给B的,一个是B发给A的,这样当我们断开连接的时候有两大步。

  1. 断开A发给B信息的通道
  2. 断开B发给A信息的通道

我们先看断开A发给B信息的通道:

A发信息给B:我累了,我先睡了,88.
B发信息给A:好的,那你先睡吧。

这时候A就睡觉了,A也不会发信息给B了。但是这时候B还是可以继续给A发信息,B可能深夜突然来个深情告白

B发信息给A: 其实我XXXXXXXX。

所以单纯二次挥手是不够的,还要断开B发给A信息的通道:

B发信息给A:不过你说你要睡了,我觉得是比较晚了,我也要睡了,晚安。
A发信息给B: 那你也早点睡。晚安

所以连在一起是:

A发信息给B:我累了,我先睡了,88.
B发信息给A:好的,那你先睡吧
B发信息给A:不过你说你要睡了,我觉得是比较晚了,我也要睡了,晚安。
A发信息给B: 那你也早点睡。晚安

刚开始是双向通信,然后二次挥手后,A到B的断了,所以这时候变成单向的数据传输,然后再二次挥手,把这个单向数据传输也关闭。

image.png
image.png

所以我们看到了TCP的连接和断开都这么多步,多次确认等操作,但是UDP是不需要先建立一个稳定的通道,直接就把数据发过去了。所以UDP更快,因为不用先去建立连接。

1.2 TCP的无差错传输

TCP为什么传输安全,UDP传输不安全,TCP传输保证了数据最终能稳定安全的到达目的地,而UDP只管发送出去,不管最终是否收到,具体原因是为啥?

发送端

对于发送端:每收到一个确认帧,发送窗口就向前滑动一个帧的距离。当发送窗口内无可发送帧时(即窗口内的帧全是已发送但未收到确认的帧),发送方就会停止发送,直到接收方发送确认帧使窗口移动,窗口内有可以发送的帧,之后才继续发送 具体如下图:


image.png

接收端:

对于接收端:当收到数据帧后,将窗口向前移动一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。

image.png

滑动窗口协议的重要特性

  • 只有接收窗口向前滑动、接收方发送了确认帧时,发送窗口才有可能(只有发送方收到确认帧)向前滑动
  • 停止-等待协议、后退N帧协议 & 选择重传协议只是在发送窗口大小和接收窗口大小上有差异。

1.停止等待协议:发送窗口大小=1,接收窗口大小=1;即 单帧滑动窗口 等于 停止-等待协议
2.后退N帧协议:发送窗口大小>1,接收窗口大小=1。
3.选择重传协议:发送窗口大小>1,接收窗口大小>1。

  • 当接收窗口的大小为1时,可保证帧有序接收。
  • 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的(注意要与TCP的滑动窗口协议区别)

1.3 TCP与 UDP 区别

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 介于自己的网络方面知识烂的一塌糊涂,所以准备写相关网络的文章,但是考虑全部写在一篇太长了,所以分开写,希望大家能仔...
    青蛙要fly阅读 3,508评论 0 2
  • 目录 TCP协议的基本概念面向链接的服务可靠的服务序列号字节流传输 TCP协议数据段的格式TCP伪头部 TCP协议...
    kirito_song阅读 8,147评论 2 33
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 8,867评论 0 6
  • 传输层提供的服务 传输层的功能 从通信和信息处理的角度看 ,传输层向它上面的应用层提供通信服务,它属于面向通信部分...
    CodeKing2017阅读 9,054评论 1 9
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,485评论 6 174

友情链接更多精彩内容