美文网首页
1.1 通信协议分析 tcp/udp

1.1 通信协议分析 tcp/udp

作者: 沉迷学习ing | 来源:发表于2018-08-22 22:14 被阅读0次

TCP/IP

1、TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议。定义了主机如何连入因特网以及数据如何在他们之间传输的标准。


TCP/IP

2、3次握手协议/4次挥手协议


3次握手协议
4次挥手协议

TCP通信原理

  • 首先,对于TCP通信来说,每个TCP Socket的内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式及TCP的滑动窗口就是依赖于这两个独立的Buffer和该Buffer的填充状态。
  • 接收缓冲区把数据缓存到内核,若应用进程一直没有调用Socket的read方法进行读取,那么该数据会一直被缓存在接收缓冲区内。不管进程是否读取Socket,对端发来的数据都会经过内核接收并缓存到Socket的内核接收缓冲区。
    read索要做的工作,就是把内核接收缓冲区中的数据复制到应用层用户的Buffer里。
  • 进程调用Socket的send发送数据的时候,一般情况下是讲数据从应用层用户的Buffer里复制到Socket的内核发送缓冲区,然后send就会在上层返回。换句话说,send返回时,数据不一定会被发送到对端。


    image.png

什么是滑动窗口协议

发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接收方确认,目的是控制发送速度,以免接收方的缓存不够大导致溢出,同时控制流量也可以避免网络拥塞。

下面图中的4,5,6号数据帧已经被发送出去,但是未收到关联的ACK,7,8,9帧则是等待发送。可以看出发送端的窗口大小为6,这是由接受端告知的(事实上必须考虑拥塞窗口cwnd,这里暂且考虑cwnd>rwnd)。此时如果发送端收到4号ACK,则窗口的左边缘向右收缩,窗口的右边缘则向右扩展,此时窗口就向前“滑动了”,即数据帧10也可以被发送

image.png

明白了Socket读写数据的底层原理,我们就很容易理解“阻塞模式”:对于读取Socket数据的过程而言,如果接收缓冲区为空,则调用Socket的read方法的线程会阻塞,知道有数据进入接收缓冲区;而对于写数据到Socket中的线程来说,如果待发送的数据长度大于发送缓冲区空余长度,则会阻塞在write方法上,等待发送缓冲区的报文被发送到网络上,然后继续发送下一段数据,循环上述过程直到数据都被写入到发送缓冲区为止

从前面分析的过程来看,传统的Socket阻塞模式直接导致每个Socket都必须绑定一个线程来操作数据,参与通信的任意一方如果处理数据的速度较慢,会直接拖累到另一方,导致另一方的线程不得不浪费大量的时间在I/O等待上,所以这就是Socket阻塞模式的“缺陷”。但是这种模式在少量的TCP连接通信的情况下,双方都可以快速的传输数据,这个时候的性能是最高的。

相关文章

  • 1.1 通信协议分析 tcp/udp

    TCP/IP 1、TCP/IP(Transmission Control Protocol/Internet Pr...

  • java基础-day25-网络编程

    网络编程 1. 网络编程概述 1.1 C/S和B/S 1.2 网络通信协议 1.3 UDP和TCP/IP区别 1....

  • 查漏补缺->04网络协议

    目标 一、TCP与UDP 1.1 TCP与UDP的对比 1.3 TCP四次挥手 三、HTTP1.0、HTTP1.1...

  • TCP三次握手四次挥手

    TCP和UDP都是常见的通信协议,其中TCP以可靠数据传输相较于UDP更加被选用。TCP协议中最基础的应该就是三次...

  • TCP、UDP、HTTP与HTTPS的异同

    TCP、UDP、HTTP与HTTPS都是通信协议,在这里首先先介绍一下什么是通信协议。 什么是通信协议? 通信协议...

  • Android复习知识

    通信协议相关:udp,tcp,http,socketjava:hashMap设计模式与原则Android:jetp...

  • TCP和udp协议

    TCP 与 UDP 的区别及应用场景 概述 两者都是通信协议, TCP、UDP 是传输层协议,但他们的通信机制与应...

  • 史上最简单的Sockte通信--1

    Socket,是基于网络通信协议封装的一个网络通信接口,可以支持TCP或UDP通信协议。通常是应用于TCP协议,这...

  • 网络 Conclusion

    1. TCP和UDP TCP/UDP详细分析TCP是点对点的通信,UDP是广播TCP控制了数据包的发送序列的产生,...

  • TCP/UDP通信协议

    1、TCP:传输控制协议。面向连接的、可靠的、点到点的通信; 2、UDP:用户数据报协议。面向非连接的、不可靠的、...

网友评论

      本文标题:1.1 通信协议分析 tcp/udp

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