文章目录
  1. TCP主要特点
  2. TCP连接
  3. TCP头部

TCP主要特点

  • TCP是面向连接的传输层协议,即应用程序在使用TCP协议前,必须先建立TCP连接;
  • TCP连接只能是一对一;
  • TCP提供可靠交付。通过TCP协议传送的数据,可无差错、不丢失、不重复、按序到达;
  • TCP提供全双工通信。运行通信双方的应用进程在(建立连接之后,释放连接以前的)任何时候都可以发送数据,通信双方既是发送方也是接收方,TCP连接的两端都设有发送缓存与接收缓存;
  • 面向字节流。TCP将应用程序交付下来的数据仅仅看作一连串无结构的字节流。

TCP连接

TCP连接有两个端点,这个端点就是套接字socket,可使用IP:Port唯一区分。

socket是操作系统提供的网络编程接口,因为数据链路层、网络层、传输层协议均在内核中实现,而应用层基本上在用户空间,因此操作系统必须提供一组系统调用使应用层可以使用数据链路层、网络层、传输层提供的服务。

socket主要提供两种功能:(1)将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区、或从TCP/UDP内核接收缓冲区复制数据到用户缓冲区;(2)应用程序可通过socket提供的接口修改内核中各层协议的控制信息,从而精确地调整底层通信的行为。

TCP头部

TCP头部格式如下。

 

  • 确认号。若确认号为N,则表明从起始序号到N-1的TCP字节流已经按顺序收到。
  • 数据偏移。以4字节为单位,即若数据偏移为5,则TCP头部长20字节。
  • 确认ACK。仅当确认ACK为1时确认号字段才有效,TCP规定:在连接建立后,所有传送的报文段都必须将ACK置1。
  • 复位RST。RST为1表明TCP连接出现严重差错,必须立即释放连接。
  • SYN位。在连接建立时用来同步序号,SYN=1且ACK=0用来请求连接,SYN=1且ACK=1表明接受连接;SYN位置1标志建立连接阶段的报文。
  • FIN位。FIN位置1表明向对方提出终止连接。
  • 窗口。用来告知通信另一方,自本报文段头部的确认号算起,允许其发送的数据量(以字节为单位)。
  • 选项。长度可变,包括最大报文段长度、窗口扩大选项、时间戳、选择确认等。