2.2连接服务器

2.2连接服务器

  1. 连接的意思

    1. 创建嵌套字之后,浏览器调用connect,协议栈就会将客户端的嵌套字与服务端的嵌套字进行连接
    2. 连接就是通信双方交换控制信息。
    3. 控制信息:控制数据收发操作所需要的信息(IP地址、端口等)
    4. 缓冲区:执行数据收发操作时,临时存放收发的数据的内存空间。
  2. 复制保存控制信息的头部

    1. 控制信息分为两类:

      1. 头部记录的信息
      2. 嵌套字(协议栈中的内存空间)记录的信息。
    2. TCP的头部格式

      1. 字段名称 长度(比特) 含义
        发送方端口号 16 发送网络包的程序的端口
        接收方端口号 16 网络包接收方程序的端口号
        序号(发送数据的顺序编号) 32 发送方告知接收方该网络包发送的数据相当于所有发送数据的第几个字节
        ACK号(接受数据的顺序编号) 32 接收方告知发送方已经收到了所有数据的第几个自己。
        数据偏移量 4 表示头部的长度,也可以认为数据的部分起始位置
        保留 6 该字段为保留,现在未使用
        控制位 6 每个比特分别表示的控制信息含义 URG:表示紧急指针字段有效。 ACK:表示接受数据序号字段有效,一般表示数据已被接受方收到。 PSH:通过flush操作发送的数据。 RST:强制断开连接,用于异常终止的情况 SYN:发送方和接收方相互确认序号,表示连接操作 FIN:表示断开连接
        窗口 16 接收到改制发送方窗口大小(确认可一起发送的数据量)
        校验和 16 用来检测是否出现错误
        紧急指针 16 表示应急处理的数据位置
  3. 连接操作的具体过程

    1. 应用程序调用socket库中的connect(<描述符>、<服务端的ip地址><服务端的端口号>)

    2. 信息传递给协议栈的TCP模块

    3. TCP模块处创建表示连接控制信息的头部

    4. 通过TCP头部中的发送方和接收方的端口号可以找到要连接的嵌套字

      1. TCP模块将信息传递给IP模块并委托他进行发送
      2. ip模块执行网络包进行发送
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.2.1 连接是什么意思 连接实际上是通信双方交换控制信息,在套接字中记录这些必要信息并准备数据收发的一连串操作...
    ShutLove阅读 1,872评论 0 0
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 7,321评论 0 2
  • 转自原文:TCP、UDP以及TCP滑窗,它们的区别注:文中提到TCP传输过程的特点,以及“粘包”的原因和解决方案,...
    半岛夏天阅读 8,918评论 2 31
  • 目录: TCP是什么TCP报文结构TCP连接过程TCP状态转移TCP流量控制 —— 滑动窗口TCP拥塞控制TCP可...
    Katou_Megumi阅读 5,211评论 0 4
  • 一、连接 - 是TCP一手包办的。。。。 1、理解:其实我们是将通信之前的准备操作称为“连接”。这是因为从电话的连...
    非苏寒阅读 1,352评论 0 0