传输层之TCP

传输层

计算机网络体系结构中的物理层、数据链路层以及网络层解决的是主机与主机之间的通信。

但是在实际的操作中,两台主机间的通讯实际上是两台主机进程间的通讯。就像聊QQ,肯定是两个主机上的QQ程序来相互通信的。

TCP的出现就是为了解决这个端到端的问题。

传输层还有一个很重要的作用:要保证传输数据的可靠性

TCP

全称是 Transmission Control Protocol ,这是一种 面向连接 connection-oriented 协议。

两台主机上的进程或者应用程序在进行通信之前,必须要先进行握手,这个握手是一种逻辑上的连接,并不是两个主机之间真的握手。

什么是TCP?

TCP是一种面向连接的、可靠的、基于字节流的传输层通讯协议。

  • 一对一,不能像UDP协议可以一对多;
  • 可靠的,不管网络链路层出现什么变化,TCP都可以保证一个报文一定能达到接收端;
  • 字节流,没有边界、有序、

UDP

用户数据报协议 User Datagram Protocol

这种协议不需要建立连接们就能直接发送封装好的IP数据包

协议非常的简单,头部只有8个字节

而且你发出去,对方到底收没收到,收到的完不完整,是没办法保证的。

TCP与UDP对比

两者的不同点:

  1. 连接
    • TCP要先建立连接,才能通信
    • UDP不需要连接,即刻传输
  2. 服务对象
    • TCP是一对一
    • UDP是一对一、一对多、多对多
  3. 可靠性
    • TCP是可靠交付数据的,数据可以做到无差错、不丢失、不重复、按需到达
    • UDP无法保证
  4. 拥塞控制、流量控制
    • TCP都有,用于保证数据的传输的安全性
    • UDP都没有,但即使网络非常拥堵,也不会影响它的发送速率
  5. 首部开销
    • TCP较长,有一定的开销
    • UDP则相对较少

两者的应用场景

  • TCP因为足够可靠,所以常用于FTP文件传输;HTTP/HTTPS
  • UDP因为它的实时性,所以常用于:包量较少的通信(DNS、SNMP);视频音频,广播通信。

TCP三次握手与四次挥手

三次握手

三次握手都是怎么握的?

每一次握手,都在改变着客户端与服务器端所处的状态。

为什么非要握手三次呢?

  1. 三次握手可以阻止历史重复连接的初始化(主要原因)
  2. 三次握手可以同步双方的初始序列号
  3. 三次握手可以避免资源浪费

四次挥手

挥手是为了断开。

为什么挥手要挥四次?

在关闭连接的时候,客户端向服务端发送FIN时,仅仅表示客户端不再发送数据了,但是还能接收数据。

服务器接收到客户端的FIN报文时,先回一个ACK应答报文,而服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送FIN报文给客户端表示同意关闭连接。

posted @ 2021-12-08 19:51  iron2222  阅读(156)  评论(0编辑  收藏  举报