TCP/UDP 对比

  1. 运输层
  2. UDP
  3. TCP
  4. TCP/UDP 对比

运输层

运输层向他之上的应用层提供通信服务,属于面向通信部分的最高层,同时也是面向用户功能的最底层。从IP层的视角来看,通信的两端是两个主机;从运输层的角度来看,通信的两端是主机中的进程。

要为不同主机上的多个进程同时服务,必然要将进程交付的或者交付给进程的数据进行复用分发。而实现这种分发的基础之一就是端口机制。

选择端口而不是使用目的主机的进程标识符(一个整数)后者特定进程名来标记,是因为不同主机上可能装有不同的操作系统,其进程标识符的机制可能不一样,而且进程是动态的,可能发生建立和消亡。

UDP

  1. 无连接,发送数据前不需要建立连接,因此减少了开销和时延
  2. 尽最大努力交付,不保证可靠性,主机也不需要维护复杂的状态表
  3. 面向报文,不对应用层发来的报文进行分组或者组合,报文过长,IP层传送时可能会进行分片,若太短,贼回事IP数据包的头部相对长度太大,减低IP层的效率。
  4. 没有拥塞机制,对于一些实时应用(IP电话等)很重要
  5. 允许一对一,一对多,多对一,多对多,因为不需要建立连接。
  6. 头部开销小,仅有8个字节,因为只提供了分用复用(目的端口和源端口号),以及长度和检验机制,

UDP使用2个字节的检验和来进行检错,有错就丢弃。并且同时进行了首部和数据报的检测,而IP层的检测只是针对首部进行的。

发送方主机在发送前计算一个检验和,接受方在收到后重新计算,若相等则认为无措,但是并不代表没有错误,也有刚好发生多个错误相互抵消的情况。

TCP

TCP协议更为复杂,因为提供了可靠传输流量控制拥塞控制等机制。

TCP的主要特点

  1. 面向连接的运输层协议,应用发送数据前先建立链接,使用完后释放连接
  2. 每一条连接只能是点对点(一对一)
  3. 提供可靠的传输,即不错、不乱、不丢。及时是在不可靠的信道上进行传输
  4. 提供全双工通信,允许双方的应该用进程任何时候都能发送数据,两端均设有缓存
  5. 面向字节流,“流指的是流入到进程或者从进程流出的字节序列”,应用进程将数据块交付给TCP,TCP将其视为一段无结构的字节流,将其进行组装或者分割,然后发送出去,接收方TCP将字节流转换为数据报之后发送给对应的进程,但两者的数据报大小不具有对等关系,报文的长度是根据窗口值和当前网络的拥塞程度决定的

TCP的连接

TCP把连接作为最基本的抽象,那TCP连接的端点具体是什么呢?

TCP连接的端点是套接字(socket),即(IP + 端口号)

可靠传输的工作原理

理想的传输条件:

  1. 传输信道不产生差错
  2. 发送放的速率和接收方的速率是可以匹配的

实际的网络中不存在理想的传输条件,但是使用一些协议,如出错是进行重发,速率不匹配时进行流量控制。

停止-等待协议

猜你喜欢

转载自blog.csdn.net/weixin_40901329/article/details/79505123