TCP基本知识

TCP基本认识

1、TCP头格式

TCP基本知识_第1张图片

序列号:用来解决网络包乱序问题

确认应答号:用来解决不丢包的问题。

TCP数据长度 = IP总长度 - IP首部长度 - TCP首部长度。

2、什么是TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。

  • 面向连接:一定是「一对一」才能连接;
  • 可靠的:TCP 都可以保证一个报文一定能够到达接收端;
  • 字节流:消息是「没有边界」的,有序的,当「前一个」消息没有收到的时候,即使它先收到了后面的字节,那么也不能扔给应用层去处理,同时对「重复」的报文会自动丢弃。

3、TCP连接

用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接

  • 建立一个 TCP 连接是需要客户端与服务器端达成上述三个信息的共识:
    Socket:由 IP 地址和端口号组成。
  • 序列号:用来解决乱序问题等。
  • 窗口大小:用来做流量控制。

4、如何唯一确定一个 TCP 连接呢?

TCP 四元组可以唯一的确定一个连接,四元组包括如下:

  • 源地址 目的地址 :IP 头部中,作用是通过 IP 协议发送报文给对方主机。
  • 源端口 目的端口 :TCP 头部中,作用是告诉 TCP 协议应该把报文发给哪个进程。

5、TCP 的最大连接数

最大连接数 = 客户端IP数 (2^32)* 客户端的端口数(2^16)

限制条件使得达不到理想上限:

  1. 文件描述符限制:Socket 都是文件,所以首先要通过 ulimit 配置文件描述符的数目;
  2. 内存限制:每个TCP连接占用一定内存,操作系统内存有限;

6、UDP 和 TCP 有什么区别呢?分别的应用场景是?

UDP 不提供复杂的控制机制,利用 IP 提供面向「无连接」的通信服务。
TCP基本知识_第2张图片

  • 目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。
  • 包长度:该字段保存了 UDP 首部的长度跟数据的长度之和。
  • 校验和:校验和是为了提供可靠的 UDP 首部和数据而设计。

6.1区别:

1、TCP面向连接,传输之前建立连接(三次握手),UDP不需要连接,直接传输,

2、TCP是一对一服务; UDP支持一对一,一对多,多对多。

3、TCP可靠交付数据,数据可以无差错、不丢失、不重复、按需到达;UDP只是尽力而为。

4、TCP有拥塞控制和流量控制,保证数据安全性;UDP没有,网络非常拥堵了,也不会影响 UDP 的发送速率。

5、TCP首部在没有使用「选项」字段时是20个字节,如果使用了「选项」字段则会变长的;UDP只有8个字节,固定不变。

6、TCP流式传输,没有边界,保证顺序和可靠。UDP一个包一个包发送,有边界,可能丢包乱序。

6.2应用场景:

TCP:①FTP文件传输②HTTP/HTTPS。

UDP:①DNS②广播通信③多媒体通信。

你可能感兴趣的:(计算机网络,计算机网络)