计算机网络自顶向下第三章传输层二TCP
TCP
全双工 A-B,B-A
点对点 一对一的
TCP连接建立过程
客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来相应,最后,客户再用第三个特殊的报文段作为相应,前两个报文段不承载"有效载荷"也就是不包含应用层数据,而第三个报文段可以承载有效载荷。这种连接建立过程被称为三次握手
最大报文段长度(MSS)通常根据最初确定的有本地发送主机发送的最大链路层帧长度(即最大传输单元MTU)
MTU1500字节=TCP/IP首部40字节+MSS1460字节
当TCP发送一个大文件,TCP通常讲文件划分成长度为MSS的若干块(最后一块除外,通常小于MSS)。

首部包括源端口号和目的端口号,被用于多路复用/分解
同UDP一样,TCP首部也包括检验和字段
TCP报文段首部还包括
32比特的序号字段和32比特的确认号字段,用于实现可靠数据传输
假定数据流由一个包含5000000字节的文件组成,其MSS为1000字节,数据流首字节编号0,该TCP将为该数据流构建500个报文段,给第一个报文段分配序号0,第二个分配1000,第三个2000,以此类推
假定主机A已经收到一个来自主机B的包含字节0-535的报文段,以及另一个包含字节900-1000的报文段,由于某种原因没有收到536-899的报文段,主机A为了重新构建主机B的数据流,仍在等待字节536以及其后的字节。因此,A到B的下一个报文段将在确认号字段包含536,。因为TCP只确认该流中至第一个丢失字节为止的字节,所以TCP被成为提供累计确认
15比特的接受窗口字段,用于流量控制
4比特的首部长度字段,该字段指示了以32比特的字为单位的TCP首部长度
可选和变长的选项字段,用于发送放和接收方协商最大报文段长度(MSS)通常为空
6比特标志字段,ACK比特用于指示确认字段的值是有效的,即该报文段包括一个对已被成功接受报文段的确认
RST,SYN,FIN比特用于连接建立和拆除,PSH比特被设置的时候,就指示接受方应立即将数据交给上层,URG比特用来指示报文段里存在这被发送段的上次设置为紧急的数据
估计往返时间
报文段的样本RTT(表示为SampleRTT)就是从某报文段被发出(即交给IP)到对该报文段的确认被收到之间的时间量
TCP维持一个SampleRTT均值(EstimatedRTT)一但获得一个新的SampleRTT,TCP会根据下列公式跟新EstimateRTT
EstimatedRTT=(1-α)×EstimatedRTT+α×SampleRTT
α参考值为0.125
TimeoutInterval=EstimatedRTT+4*DevRTT
TimeoutInterval推荐初始值为1秒
可靠数据传输
超时间隔加倍,每次发送某个报文段超时,超时时间间隔是上次的两倍
流量控制
一条TCP连接每一侧的主机都为该连接设置了接受缓存,当接受到正确按序的字节后,就将字节放入缓存。相关应用从缓存中读取数据,但不一定是数据一到达就立即读取。由于接收方应用可能忙于其他任务,导致读取数据相对缓慢,二发送方发送的太多太快,发送的数据很容易使该连接的接受缓存溢出。
TCP为它的应用程序提供了流量控制服务以消除发送方使接收方缓存溢出的可能性。流量控制因此使一个速度匹配服务。即发送方的发送速率与接收方应用的读取速率相匹配。TCP发送方可能因为IP网络拥塞被遏制,这种形式的发送放控制被成为拥塞控制
TCP通过让发送方维护一个成为接受窗口的变量来提供流量控制,接受窗口用于给发送方一个提示-接受方还有多少可用的缓存空间。因为TCP是全双工,所以双方都各自维护一个接收端口
TCP建立连接的方式



TCP关闭连接


拥塞控制原理

慢启动

计算机网络自顶向下第三章传输层二TCP的更多相关文章
- 数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点
上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Contr ...
- 第6章 传输层(详解TCP的三次握手与四次挥手)
第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
UNIX网络编程----传输层:TCP.UDP.SCTP 一.概述 本章的焦点是传输层:包括TCP.UDP.和SCTP(流控制传输协议).SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令. ...
- 第8章 传输层(1)_TCP/UDP协议的应用场景
1. 传输层的两个协议 1.1 TCP和UDP协议的应用场景 (1)TCP协议:如果要传输的内容比较多,需要将发送的内容分成多个数据包发送.这就要求在传输层用TCP协议,在发送方和接收方建立连接,实现 ...
- 传输层:TCP 协议
传输层:TCP 协议 一.概述 TCP 和 UDP 处在同一层——运输层,但是它们有很多的不同.TCP 是 TCP/IP 系列协议中最复杂的部分,它具有以下特点: (1) TCP 提供 可靠的 数据传 ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- 传输层之TCP
---恢复内容开始--- 坞无尘水槛清,相思迢递隔重城. 秋阴不散霜飞晚,留得枯荷听雨声. --李商隐 上一篇中我们了解了socket编程是基于TCP或者UDP,所以我们有必要对TCP,和UDP ...
- 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1
3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...
随机推荐
- MD5碰撞
if ( $_POST['param1'] !==$_POST['param2'] && md5($_POST['param1']) === md5($_POST['param2']) ...
- Xmanager用法(export DISPLAY=客户端IP:0.0)
1.在用户的目录下找到文件.bash_profile或profile,用vi对其进行编辑.加入下列命令行: DISPLAY=192.168.88.71:0.0;export DISPLAY 2.如果只 ...
- LeetCode 62 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角.问总共有多少条不同的路径? 示例 1: 输入: ...
- Java学习2
final在修饰类时,并不限制用户修改对象包含的变量值,只是限制了对象的主转移,只能针对某一个对象进行操作,中途不可更改对象. 重写父类的方法 重写(Override)和重载(Overload)都是针 ...
- python 文件(file)操作
操作文件的一般流程有: 打开文件.文件处理.关闭文件 开开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[不可读: 不存在则创建:存在 ...
- OgnlContext 源码
// Copyright (c) 1998-2004, Drew Davidson and Luke Blanshard package ognl; import ognl.enhance.Local ...
- ZigBee学习三 UART通信
ZigBee学习三 UART通信 在使用串口时,只需掌握ZigBee协议栈提供的串口操作相关的三个函数即可. uint8 HalUARTOpen(uint8 port,halUARTCfg_t *co ...
- [SDOI2015][bzoj3993] 星际战争 [二分+最大流]
题面 传送门 思路 首先,有一个非常明显的模型: 将激光武器放到一边,机器人放到另一边,从每一个激光武器向它可以攻击的机器人连边,形成一个二分图 建立附加源点$ss$和附加汇点$tt$,$ss$连所有 ...
- HDFS设计思想
HDFS设计思想 DataNode:用来在磁盘上存储数据 HDFS 数据存储单元( block ) 1 文件被切分成固定大小的数据block块 •默认数据块大小为 64MB(hadoop1.x版本6 ...
- bzoj 4291: [PA2015]Kieszonkowe
Description 给定n个数,请从中选出若干个数,使得总和为偶数,请最大化这个总和. Input 第一行包含一个正整数n(1<=n<=1000000). 第二行包含n个正整数a_ ...