1. TCP协议
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
可靠的面向连接的字节流传输层协议。
TCP:端点(end point)或套接字,一个ip地址+端口号
两个端点可以唯一标识一个TCP连接。
TCP报文段
TCP头:20字节,有可选项的60字节。
源ip地址+端口号, 目标ip地址+端口号 32位
序列号(SEQ) 32位 代表要发送的数据的第一个字节
确认号(ACK) 32位 代表要发送的数据的最后一个字节+1
头大小+URG/SYN/RST/FIN/(8位)+窗口大小(16位->65536字节) 32位
窗口大小用来解决网络拥塞
TCP数据
TCP数据是可选的,如果不带数据,表示是建立连接或删除连接
TCP建立连接:
- 客户端发送SYN TCP报文头到服务端,序列号为ISN
- 服务端发送SYN TCP报文头到客户端,序列号为ISN+1
- 客户端发送ACK TCP报文头到客户端,序列号为ISN+1,确认号为SEQ+1
2. UDP(User Data Protocol,用户数据报协议)
是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是