Linux高性能服务器编程-游双——第三章 TCP协议详解

  • TCP协议更接近应用层

3.1 TCP服务的特点

  • 传输层协议有两: TCP和UDP
  • TCP协议面向连接, 字节流, 可靠传输
  • TCP和UDP发送接收的区别
  • 在这里插入图片描述
  • TCP传输的可靠性
    • TCP协议采用发送应答机制,也就是发送的每一个TCP报文得接收到对方的应答, 才认为是传输成功.
    • 超时重传, 如果在给定时间内未收到应答, 认为传送失败, 会再次传输.
    • 重排和整理, 由于IP数据报是不可靠的, 接收端有可能会乱序, 所以TCP协议还负责报文的重排.

3.2 TCP的头部结构

3.2.1 TCP固定头部结构

  • 在这里插入图片描述

3.2.2 TCP头部选项

  • 选项是可变长度的,

3.2.3 使用tcpdump观察TCP头部信息

3.3 TCP连接的建立和关闭

3.3.1 使用tcpdump观察tcp连接的建立和关闭

tcp连接的三次握手和四次挥手

在这里插入图片描述

  • 连接

3.3.2 半关闭状态

  • 客户端告诉服务器这边数据传输结束, 需要关闭了, 但是服务器还有一些数据没有传输完, 客户端还能继续接收服务器的数据, 知道服务器数据传输完毕, 发送结束报文, 这种连接状态就是半关闭.
  • 如下图, 客户端发起关闭连接之后, 服务器还能继续传输数据, 直到同样发送一个fin 结束报文.
    在这里插入图片描述

虽然有半关闭, 但用的少

3.3.3 连接超时

  • 如果由于服务器对于客户端发送的报文没有即时应答, 那么对于TCP而言, 他会先进行重连, 执行多次, 如果仍然无效, 那么通知应用程序连接超时.

3.4 TCP状态转移

在这里插入图片描述

3.4.1 TCP状态转移图

在这里插入图片描述

3.4.2 TIME_WAIT状态

  • 客户端在收到服务器的接收报文(FIN, ACK)之后, 没有直接关闭, 而是进入TIME_WAIT状态, 一段时间之后再关闭
  • 因为他客户端并不确定服务器是否有接收到报文7, 假如没有, 那过一段时间服务器就会重发报文6, 这样客户端就知道服务器刚刚没收到7, 就会重发7.
  • TIME_WAIT状态可以保证可靠的终止TCP连接.
  • 这段时间通常是2min
  • 所以如果应用程序重启, 之前的端口出于TIME_WAIT状态, 是没法立刻被使用的.

3.5 复位报文段

  • TCP报文, 携带RST标志

3.5.1 访问不存在的段门口

  • Flags[R], 告诉发送方你请求的端口是不存在的, 不要再发了, 接收到复位报文段的主机应该关闭或者重新连接, 而不能回应这个报文.
  • 在这里插入图片描述

3.5.2 异常终止连接

  • 需要异常终止连接的时候, 也就是强制结束, 就立刻给对方发一个复位报文端
  • 这样发送端的所有等待发送的数据都会被丢弃.

3.5.3 处理半打开连接

  • 半打开: 一端有连接信息, 另一端因为各种问题(异常关闭重启等)没有连接信息, 这种就叫半打开
  • 如果客户端向版打开的连接写入数据, 另一方会回应一个复位报文段

3.6 TCP交互数据流

  • TCP连接交换的应用程序数据: 交互数据(时效性高, 数据量少), 成块数据(传输效率高, 也就是单次数据量高)
  • 延迟确认: 服务器在发送确认报文的时候, 包括需要发送的应用程序信息, 而客户端发送的确认报文不包括应用程序信息.
  • 延时确认能够减少需要发送的TCP报文的数量.

3.7 TCP成块数据流

  • 当使用FTP协议传输大文件时候, 发送方会连续发送多个TCP报文端, 接收方一次确认所有这些报文段
  • 连续发送的报文段的数量, 由接收通告窗口的大小决定

3.8 带外数据

  • 优先级高
  • TCP并没有真正实现带外数据, 是利用其头部的URG标志

3.9 TCP超时重传

3.10 拥塞控制

3.10.1 拥塞控制概述

  • 拥塞控制四部分: 慢启动, 拥塞避免, 快速重传, 快速恢复
  • CWND(Congestion window) 拥塞窗口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值