面向连接的运输: TCP 《计算机网络——自顶向下方法(James F. Kurose, Keith W. Rose)》读书笔记

         TCP连接是因特网运输层的面向连接(connection-oriented)的可靠运输协议。

一、TCP连接

 (1)TCP被称为面向连接的协议,是因为在两个应用程序互相发数据之前,必须先进行握手建立连接。这种连接不是一条像在电路交换网络中的TDM或FDM电路,也不是一条虚电路——因为TCP协议只在端系统中运行,所以他们的连接状态完全保留在端系统中,而中间的网络元素(路由器等)不会维持、也不知道他们的连接状态。

(2)TCP连接提供全双工服务(full-duplex service),即当两个进程A和B建立起TCP连接之后,那么应用层数据可以在从A流向B的同时,也从B流向A。

(3)TCP连接是点对点的连接。即在单个发送方与单个接收方之间的连接。多播(即在一次发送中,从一个发送方将数据传输给多个接收方)对TCP来说是不可能实现的。

        我们将发起TCP连接的进程叫作客户进程,而另一个进程称为服务器进程。当客户进程想要与服务器进程建立连接时,它首先发送一个特殊的TCP请求报文——>服务器进程收到后,回送一个特殊的TCP响应报文——>客户进程再发一个TCP响应报文(最后这个 报文可以承载有效载荷)。这时,两边都已经收到响应报文,三次握手(three-way handshake)连接建立。在三次握手连接建立中,连接的双方都将初始化与TCP连接相关的许多状态变量。

        一旦TCP连接建立,两个进程之间就可以发送数据了。客户进程的应用层将要发送的数据流传递到套接字(进程之门)后,数据流就由TCP协议管了。它将引导数据流到TCP发送缓存中(这个发送缓存是在三次握手期间初始化的),然后根据最大报文段长度(Maximum Segment Size,MSS)来决定一次应当取多大的数据放入报文段中。当TCP连接的另一端接收到报文段之后,该报文段的数据就被提取出来放入TCP接收缓存中(这个缓存也是握手期间初始化的)。应用程序从此缓存读取数据。


这边有两个比较常见的名词:

①最大报文段长度(Maximum Segment Size,MSS):该术语很容易被混淆,它其实指的是报文段里应用数据的最大长度,而不是包括TCP首部的TCP报文段的最大长度。

②最大传输单元(Maximun Transmission Unit,MTU):指的是最大链路层帧长度,即应用数据+TCP首部+IP首部

至此,我们知道了TCP连接的组成包括:两台主机上的缓存、变量和与进程相连的套接字。而两台主机之间的网络元素(路由器、交换机和中继器)没有为该连接分配任何变量。

二、TCP报文结构

        TCP报文结构由一个首部字段和一个数据字段组成。其中,首部字段有20字节的典型长度+一个可选的“选项”字段组成;而数据字段的长度由MSS决定。

TCP的首部包含:

    ①源端口号和目标端口号:被用于多路复用来自上层应用的数据/多路分解送到上层应用

    ②32比特的序号字段和32比特的确认字段:这些字段被TCP发送方和接收方用来实现可靠数据传输服务(讨论见后)

    ③16比特接收窗口字段:该字段用于指示接收方愿意接收的字节数量,用于流量控制

    ④4比特的首部长度字段:指示以32比特的字为单位的TCP首部长度(如典型的TCP长度(20字节)的首部长度是5)

    ⑤可选与变长的选项字段:该字段用于发送方与接收方协调最大报文长度(MSS)时,或在高速网络环境下用作窗口调节因子时使用。

    ⑥6比特的标志字段:A

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值