Tcp简介

特性

  • 工作在传输层
  • 面向连接协议
  • 全双工协议
  • 半关闭
  • 错误检查
  • 将数据打包成段,排序
  • 确认机制
  • 数据恢复,重传
  • 流量控制,滑动窗口
  • 拥塞机制,慢启动和拥塞避免算法

TCP包头

协议端口
  • /etc/services 文件保存了服务和端口的对应关系,我们自己应用取端口名时候可以看下是否和服务有冲突。
  • 传输层通过PORT端口号,端口号是2^16也就是0-25535,确认应用层协议。
  • 传输控制协议,面向连接的协议;通信前需要建立虚拟链路,结束后拆出链路。
  • IANA:互联网数字分配机构(负责域名,数字资源,协议分配等)。
    0-1023:系统端口或者特权端口(仅管理员可用)。众所周知,永久分配给固定的系统应用使用。22/tcp(ssh),80/tcp(http),443/tcp(https)
    1024-49151: 用户端口或者注册端口,但要求不严格,可用分配给程序注册为某应用使用
    1433/tcp(sqlserver),3306/tcp(mysql),11211/tcp(memecached)
    491512-65535:动态端口或者私有端口,客户端程序随机使用的端口(给客户端用,随机取的)
    其范围定义在文件/proc/sys/net/ipv4/ip_local_port_range
面向连接可靠性
  • ACK: 当ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
  • SYN: 当连接建立时用来同步序号。当SYN=1而且ACK=0时,表示这是一个连接请求报文。对方如果同意建立连接,则响应报文中使SYN=1而ACK=1.因此SYN置1就表示这是一个连接请求或者连接接受报文
  • FIN: 是终结的意思,用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
    image.png
使用wireshark抓包图解
  1. 三次握手概览


    image.png
  2. TCP传输层协议概览


    image.png
  3. 第一次握手标志位


    image.png
  4. 第二次握手标志位


    image.png
  5. 第三次握手


    image.png
  6. 如何判断是三次握手的第一次握手
    只需要看SYN=1其他的标志位都为0的情况

  7. 四次挥手


    1641067-5ed8bf6c24244b4c.png

TCP 超时重传

  • 异常网络下(出现超时或者丢包),TCP 控制数据传输以保证其承若的可靠服务
  • TCP服务必须能够重传超时时间内未收到确认的TCP报文段。TCP模块为每个TCP报文维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内没有收到接收方应答,TCP模块将重传TCP报文并充值定时器。
  • 重传策略:
    /proc/sys/net/ipv4/tcp_retries1最少重传次数,默认为3
    /proc/sys/net/ipv4/tcp_retries2最少重传次数,默认为15
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容