计算机网络自顶向下方法 第三章 3.5 面向连接的运输:TCP
计算机网络自顶向下方法总结3.5面向连接的运输:TCP
目录
3.5 面向连接的运输:TCP
3.5.1 TCP连接
3.5.2 TCP报文段结构
3.5.3 往返时间的估计与超时
3.5.4 可靠数据传输
3.5.5 流量控制
3.5.6 TCP连接管理
3.5 面向连接的运输:TCP
3.5.1 TCP连接
TCP被称为是面向连接的(connection-oriented),在两个数据交换进程之间,这两个进程必须先进行“握手”,即相互发送某些预备报文段,以建立确保数据传输的参数。
由于TCP协议只在端系统中运行,而不在中间的网络元素(路由器和链路层交换机)中运行,所以中间的网络元素不会维持TCP连接状态,即不是有连接的。
TCP提供全双工服务(full-duplex service),也是点对点(point-to-point)的。
TCP连接的建立过程常被称为三次握手(three-way handshake)。详细介绍见书中。
注意最大报文段长度(Maximum Segment Size,MSS)是指在报文段里应用层数据的最大长度,而不是指包括首部的TCP报文段的最大长度。
TCP连接的组成包括:一台主机的缓存,变量和与进程连接的套接字,以及另一台主机的另一组缓存,变量和与进程连接的套接字。
3.5.2 TCP报文段结构
TCP的报文段由首部字段和一个数据字段组成。
首部包括源端口号和目的端口号,检验和字段(check)。还包括32比特的序号字段(sequence number field)和32比特的确认号字段(acknowledgement number field),16比特的接收窗口字段(receive window field),4比特的首部长度字段(header length field),6比特的标志字段(falg field)等等。详细介绍见书中。
TCP把数据看成一个无结构的,有序的字节流。一个报文段的序号(sequence number for a segment)因此是该报文段首字节的字节流编号。一条TCP连接的双方均可随机地选择初始序号。
主机A填充进报文段的确认号时主机A期望从主机B收到的下一字节的序号。
TCP被称为提供累积确认(cumulative acknowledgement)。
当主机在一条TCP连接中收到失序报文段时怎么办?
- 接收方立即丢弃失序的报文段
- 接收方保留的失序的字节,并等待缺少的字节以填补该间隔。
对客户到服务器的数据确认被装载在一个承载服务器到客户的数据的报文段中,这种确认被称为是被捎带(piggybacked)。
3.5.3 往返时间的估计与超时
TCP采用超时重传机制来处理报文段的丢失问题。
估计往返时间和设置和管理重传超时间隔详细见书中,这部分有点复杂。
有些版本的TCP在收到三个冗余的ACK时,会在超时之前出发对该报文段的重传。
一个发送方能够具有的未被确认的报文段的具体数量是由TCP的流量控制和拥塞控制机制决定的。
3.5.4 可靠数据传输
TCP在IP不可靠的尽力而为服务之上创建了一个可靠数据传输服务(reliable data tranfer service),确保数据流是无损坏,无间隔,非冗余和按序的数据流。
TCP发送方有3个与发送和重传有关的主要事件:从上层应用程序接收数据,定时器超时和收到ACK。详细见书中。
当超时事件发生时,TCP重传时会将下一次的超时间隔设为先前的两倍,而在另外两个事件(收到上层应用的数据和收到ACK中)的任意一个启动时,TimeoutInterval由最近的EstimatedRTT和DevRTT值推算到。
冗余ACK(duplicate ACK)就是再次确认某个报文段的ACK,而发送方先前已经收到对该报文段的确认。一旦收到3个冗余的ACK,TCP就执行快速重传(fast retransmit),即在该报文段的定时器过期之前重传丢失的报文段。
3.5.5 流量控制
TCP为它的应用程序提供了流量控制服务(flow-control service)。TCP通过让发送方维护一个称为接收窗口(receive window)的变量来提供流量控制。接收窗口用于给发送方一个指示——该接收方还有多少缓存空间,可以保证发送方发送数据,不会使接收方的接收缓存溢出。详细见书中。
3.5.6 TCP连接管理
客户TCP通过三次握手(three-way handshake)的方式与服务器中的TCP建立一条TCP连接。
第一步:客户端的TCP向服务器发送一个特殊的TCP报文段,SYN置为1。
第二步:服务器向客户TCP发送允许连接的报文段,该允许连接的报文段被称为SYNACK(SYNACK segment)。
第三步:客户接收服务器发送SYNACK报文段,并发送另外一个报文段,SYN置为0。
这些报文段中还携带了另外的数据,初始序号,确认号字段等信息。
关闭TCP连接:
客户TCP向服务器进程发送一个特殊的TCP报文段,FIN置为1。当服务器接收到该报文段后,向发送方返回一个确认字段。然后,服务器发送它 的终止报文段,客户对这个报文段进行确认。详细见书中,在这个过程中有许多细节。
计算机网络自顶向下方法 第三章 3.5 面向连接的运输:TCP相关推荐
- 计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理
计算机网络自顶向下方法总结3.4可靠数据传输原理 目录 3.4 可靠数据传输原理 3.4.1 构造可带数据传输协议 3.4.2 流水线可靠数据传输协议 3.4.3 回退N步 3.4.4 选择重传 3. ...
- 计算机网络自顶向下方法 第三章 运输层 3.6 拥塞控制原理
计算机网络自顶向下方法总结3.6拥塞控制原理 目录 3.6 拥塞控制原理 3.6.1 拥塞原因与代价 3.6.2 拥塞控制方法 3.6 拥塞控制原理 前面讲到分组丢失时用于可靠数据传输服务的基本原理及 ...
- 计算机网络自顶向下方法 第三章 作业习题答案
https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer P1 设主机A的telnet会话端口号为x,主机B的telne ...
- 计算机网络-自顶向下方法 第三章课后习题答案(第七版)
复习题 R1. a) 就叫这个协议为简单传输协议STP(Simple Transport Protocol).在发送方,STP从发送进程接收不超过1196字节的数据块.目标主机地址和目标端口号.STP ...
- 计算机网络自顶向下方法实验报告,计算机网络自顶向下方法试验三报告.doc
计算机网络自顶向下方法试验三报告 陕西师范大学 计算机网络 实验报告 年级: 2010级 姓名: 陈翠萍 学号: 实验日期: 2012.9.24 实验名称:Wireshark Lab: HTTP 1至 ...
- 计算机网络自顶向下方法 第六章 链路层和局域网 6.3 多路访问链路和协议
计算机网络自顶向下方法总结6.3多路访问链路和协议 目录 6.3 多路访问链路和协议 6.3.1 信道划分协议 6.3.2 随机接入协议 6.3.3 轮流协议 6.3.4 DOCSIS:用于电缆以太网 ...
- 【2021-11-06 修订】【梳理】计算机网络:自顶向下方法 第三章 运输层(docx)
计算机网络 知 识 梳 理 (第一版) 建议先修课程:数据结构. 配套教材: Computer Networking - A Top Down Approach, 8th edition James ...
- 《计算机网络--自顶向下方法》第一章--计算机网络和英特网
1.1什么是英特网 1.1.1具体构成描述 主机(host)或端系统(end system):所有与因特网相连的计算设备 路由器(router):从一条入通信链路接收到达的分组,并通过一条出通信链路转 ...
- 《计算机网络 自顶向下》第三章==传输层==随堂笔记
文章目录 第三章 传输层 3.1 传输层概述 传输层提供什么服务? 传输层协议 3.2 多路复用和解复用 多路复用 解复用 3.3 UDP(User Datagram Protocol) 3.4 可靠 ...
最新文章
- 无限想象空间,用Python玩转3D人体姿态估计
- 记一次小的51CTO聚会
- Eclipse中将Java项目转换成Web项目的方法
- 问题 F: 小鱼的格子裁剪(dfs)
- oh-my-zsh 国内网络快速安装方法 | How to install oh-my-zsh in China
- php重定向页面位置,php - PHP重定向到基于页面版本的用户位置(IPAPI),并在会话中记住 - SO中文参考 - www.soinside.com...
- 任意文件读取及删除漏洞
- php时间函数单字母,ThinkPhp单字母函数
- linux中终止停止进程_如何在Linux中终止进程或停止程序
- android 360状态栏显示,Android高仿UC浏览器和360手机卫士消息常驻栏(通知栏)
- Sqlite3修复数据库
- 【TWVRP】基于matalb粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1272期】
- PyQt5-网格布局(QGridLayout)-10
- 橘子origin游戏平台如何绑定登陆验证/二次验证码?
- 简略谈谈AS安装的一些小问题
- 新快报:十年聚焦,巨杉数据库打造中国基础软件的“原创力”
- 天肌处理器天梯排行榜2022 天肌处理器发布时间排行
- The simplest way to combine two csv file in python
- Node.js实现支付宝H5支付
- 魔方(11)八轴三阶魔方(恐龙魔方)