目录

3.0   TCP特点补充

3.1  TCP报文段首部格式

3.2  TCP连接管理

3.2.1  三报文握手

3.2.2  四报文挥手

3.3  TCP的流量控制和可靠传输

3.4  TCP拥塞控制

3.4.1  接收窗口、拥塞窗口、发送窗口关系

3.4.2  慢开始和拥塞避免

3.4.3  快重传和快恢复


3.0   TCP特点补充

  • TCP提供一对一全双工可靠通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存接收缓存,用来临时存放双向通信的数据。
  • TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流。
  • UDP报文长度由发送方应用进程决定,TCP报文段的长度则根据接收方给出的窗口值和当前网络拥塞程度来决定。如果应用进程传送到TCP缓存的数据块太长,TCP就把它划分得短一些再传送;如果太短,TCP也可以等到积累足够多的字节后再构成报文段发送出去。
  • IP首部的协议字段:TCP=6,UDP=17。

3.1  TCP报文段首部格式

  • 源端口号和目的端口号各占2B。端口是传输层与应用层的SAP。传输层的复用和分用功能都要通过端口才能实现。
  • 序号:占4B,共2^32个序号。TCP连接传送的字节流中的每个字节都按顺序编号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号:占4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号=N,则表明到序号N-1为止的所有数据都已正确收到。(数据链路层的后退N帧协议的累积确认ACK是表明N及N之间的都已正确收到)
  • 数据偏移(即首部长度):占4bit,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,单位是4B。TCP首部的最大长度为60B。注意不是IP数据报分片用到的那个数据偏移,而是TCP首部长度。
  • 确认位ACK:仅当ACK=1时,确认号字段才有效;当ACK=0时,确认号字段无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
  • 同步位SYN:当SYN=1时,表明这是一个连接请求报文或连接接受报文。当SYN=1,ACK=0时表明这是一个连接请求报文,对方若同意建立连接,则应在响应报文中使用SYN=1,ACK=1
  • 终止位FIN(finish):当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
  • 窗口:占2B.窗口值为接收方让发送方设置发送窗口的依据。例如,设确认号位701,窗口字段是1000.这表明发送此报文段的一方还有字节序号位701~1700共1000B的接收缓存空间。
  • 校验和:占2B.校验和字段校验的范围包括首部和数据这两部分。在计算校验和时,要在TCP报文段的前面加上12B的伪首部。
  • 填充:为了使整个首部长度是4B的整数倍而设置的字段。
  • 保留位:保留为今后使用,但目前应置为0。
  • 紧急位URG:当URG=1时,表明紧急指针字段有效。
  • 紧急指针:占2B。它指出在本报文段中紧急数据共有多少字节(紧急数据在报文段数据最前面)。
  • 推送位PSH(Push):接收方TCP收到PSH=1的报文段,就尽快地交付给接受应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位位RST(Reast):当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 选项。长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS是TCP报文段中的数据字段的最大长度。

注:报文段的序号是其数据部分第一个字节的编号 。

3.2  TCP连接管理

 注:胡科大高军老师对于以下部分的视频讲解堪称完美,个人笔记只记录一些要点供以后补充。

3.2.1  三报文握手

  • SYN报文段(连接请求报文或连接接受报文)不能携带数据,但要消耗一个序号
  • 普通的TCP确认报文段可以携带数据,但如果不携带数据,则不消耗序号。如果该三报文握手的第三个报文段不携带数据,则TCP客户进程要发送的下一个数据报文段的序号仍为X+1。

3.2.2  四报文挥手

参与TCP连接的两个进程中的任何一个都能提出释放连接的请求。 

  • TCP规定终止标志位FIN等于1的TCP报文段即使不携带数据,也要消耗一个序号。
  • 终止等待1状态表明TCP客户不再发送数据,但TCP服务器可能还要发送数据。
  • 服务器进入关闭等待状态后,TCP连接处于半关闭状态,TCP客户不能再发送数据,但TCP服务器可能还要发送数据。

3.3  TCP的流量控制和可靠传输

数据链路层的可靠传输机制和传输层TCP的可靠传输机制有很多相同之处。如都使用窗口机制、确认、重传(超时或冗余ACK)。

因此TCP的可靠传输适合对比记忆,其不同点如下:

  • TCP使用序号,序号建立在传送的字节流之上(即字节编号),而不是建立再报文段之上。TCP的窗口大小指明了有多少序号。而GBN和SR是给窗口编号
  • TCP默认使用累积确认,这于GBN相同。但GBN需要重传出错之后的所有帧,而TCP只重传出错的序号组成的报文段(失序的报文缓存起来)。此外,TCP中提供一个SACK选择确认选项,此时TCP与SR非常相似。TCP的差错恢复机制可视为GBN和SR协议的混合体。
  • TCP采取的是对报文段的确认机制,并不是每个字节都要发回确认,而是在发送一个报文段的字节后才发回一个确认。
  • 数据链路层的后退N帧协议的累积确认ACK是表明N及N之间的都已正确收到而TCP的确认N是N-1及N-1以前的已正确收到。
  • TCP服务器通过累积确认报文段调整接收窗口的大小对发送方进行流量控制

即使接收窗口值为0,也必须接受零窗口探测报文段、确认报文段以及携带有紧急数据的报文段。 

3.4  TCP拥塞控制

在通信子网内,由于出现过量的数据包而引起网络性能下降的现象称为拥塞

在网络层实现拥塞控制的方法为显式反馈。目前网际控制报文协议(ICMP)最新规定已经不再使用源点抑制报文,即显式反馈。

在TCP中,拥塞控制主要是利用隐式反馈在传输层实现的

  • 流量控制是抑制发送端发送数据的速率,以便接收端来得及接收。
  • 拥塞控制是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。单一地增加资源并不能解决拥塞问题。

拥塞控制的方法

  • 闭环控制指作为被控的输出量以一定方式返回到作为控制的输入端,并对输入端施加控制影响的一种控制关系。 是带有反馈信息的系统控制方式。
  • 开环控制是指无反馈信息的系统控制方式。

3.4.1  接收窗口、拥塞窗口、发送窗口关系

3.4.2  慢开始和拥塞避免

 

3.4.3  快重传和快恢复

1990的reno版本,来改进TCP的性能。

 与快重传配合使用的是快恢复算法。

 

五、传输层(三)TCP相关推荐

  1. 划重点 传输层协议 tcp三次握手和四次挥手

    文章目录 传输层的协议 1.TCP/IP协议组的传输层协议 2. TCP报文段 3.TCP建立连接的过程 3.2 TCP常用端口号及其功能 4.UDP协议 4.1 UDP报文的首部格式 4.2 UDP ...

  2. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  3. Linux----网络传输层UDP/TCP

    网络传输层UDP/TCP 引入 ①端口号 ②端口号划分 ③知名端口号 ④netstat.pidof.killall.ps. awk.xargs???? ⑤所有协议需要解决的两个问题: 1)UDP ①U ...

  4. 5.3.1计算机网络传输层之TCP可靠传输

    文章目录 0.前言 1.TCP可靠传输简介 2.序号 3.确认 4.重传 0.前言 再看此篇文章之前,得熟悉一下TCP首部报文等知识 计算机网络传输层之TCP协议(tcp协议特点.tcp报文段首部格式 ...

  5. 传输层的TCP和UDP

    传输层的TCP和UDP TCP和UDP协议 TCP报文段 TCP的三次握手 TCP的四次断开 TCP的常用端口号及其功能 UDP的常用端口号及其功能 TCP和UDP协议 TCP(Transmissio ...

  6. 【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)

    文章目录 一. 协议特点 & 报文段 ① 特点 ② 报文段首部格式 二. TCP连接管理 ① 建立联系(三次握手) SYN洪泛攻击 ② 连接释放(四次挥手) 三. TCP流量控制 ① 序号 ② ...

  7. 4-1:TCP协议之传输层的作用及传输层协议TCP和UDP

    文章目录 一:传输层的定义 二:通信处理 三:传输层协议 四:TCP协议的可靠和性能 一:传输层的定义 前面说过,IP首部有一个协议字段用于标识网络层(IP)的上一层采用哪一种传输层协议.根据这个字段 ...

  8. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  9. 8月11日 网工学习 APR协议 传输层协议 TCP UDP 数据封装转发全过程

    目录 APR协议 传输层协议 TCP UDP 数据封装转发全过程 APR协议 作用:将IP地址解析为MAC地址 ARP的主要内容 在ARP高速缓存表中查找目的IP地址对应的MAC地址 广播发送ARP请 ...

  10. 面向连接的传输层协议——TCP/IP协议

    TCP/IP 协议 TCP:Transmission Control Protocol 传输控制协议 TCP/IP协议是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP ...

最新文章

  1. php 爬虫去重,浅谈动态爬虫与去重(续)
  2. Android架构纵横谈之二—基于性能的考虑(1)
  3. 简述PHP中有哪些运算符,PHP运算符简述
  4. CentOS 6.5的安装详解
  5. 零基础学caffe源码 ReLU激活函数
  6. c语言中%hu,%hx是什么意思
  7. python 笔记 之 requests获取网络数据
  8. 实现用户名密码登陆,输入错误3次后锁定用户
  9. 单片机定时器之改良版:时间轮定时器
  10. Python爬虫方法三部曲
  11. RubyInstallers无法下载或下载缓慢的问题
  12. 随机森林回归预测r语言_R语言 决策树和随机森林 回归分析
  13. 光耦重要参数与常用设计注意事项
  14. MySQL查询语句in子查询的优化
  15. Access2003学习(1)
  16. PsPad的十六进制编辑模式在win7 64位中有bug
  17. bom树形结构 表设计_K/3管理视角:树形结构下的BOM管理方式!
  18. 手把手带你飞Python爬虫+数据清洗新手教程(一)
  19. 阿里云:加大NoSQL数据库软硬件一体化技术自研
  20. Android 收集的开源项目和文章集合

热门文章

  1. 机器学习导论——机器学习三要素
  2. 烂在肚子里的救命知识!看看吧!
  3. Android虚拟机、模拟器识别
  4. 计算机科学中的数学(一)
  5. android高仿微信表情输入与键盘输入(详细实现分析)
  6. ICO和区块链的关系
  7. Flutter InkWell Ink组件
  8. 解决Win2016提示 “发生身份验证错误 要求的函数不受支持“的问题
  9. Git 从入门到放不下
  10. 中国最美的一千个汉字 : 千字文5