TCP特性
- TCP会将数据分割为最适合发送的数据快大小发送
- TCP发出一个数据段后,会启动一个定时器,等待目的端回复,若超时,将重发这个数据段
- 当TCP收到对端的数据,它将发送一个确认,这个确认可以推迟发送
- TCP将保持校验和,若校验和不对,将丢弃这个包
- TCP会将失序的报文重新排序
- TCP会丢弃重复的报文
- TCP有流量控制,其只允许另一端发送接收缓冲区所能接收的数据,防止接收端缓冲区溢出
ack number
确认序号为上次已成功接收到的数据字节序号+1
flags
U R G 紧急指针(urgent pointer)有效。
A C K 确认序号有效。
P S H 接收方应该尽快将这个报文段交给应用层。
R S T 重建连接。
S Y N 同步序号用来发起一个连接。
F I N 发端完成发送任务。
flag可以同时被设置
MSS
MSS表示TCP为对端可传送的数据报的最大长度值
每一个包的数据长度越大,则网络利用率就越高
连接建立及断开
时态变迁图
TCP服务器编程基本
T C P服务器进程是并发的,可以实现的方式可以用多进程,轻量级的如HTTPD可以用多线程。
需要注意的是多进程中,fork产生的子进程可以共享父进程的文件描述符,故可以实现多进程实现TCP server。