美文网首页
网络小结(2)——TCP/UDP

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

作者: 秀就完事了 | 来源:发表于2018-11-21 23:51 被阅读0次

    正文

    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

    相关文章

      网友评论

          本文标题:网络小结(2)——TCP/UDP

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