计算机网络 运输层

1.运输层协议概述

1.1.进程之间的通信

  • 运输层向它上面的应用层提供通信服务,属于面向通信部份的最高层
  • IP数据报能指明 通信的两端是主机,但真正通信的实体是在主机中的进程。
  • 端对端的通信实质上是进程间的通信
  • 运输层一个很重要的功能
    • 复用:不同的应用进程都可以使用同一个运输层协议传输数据
    • 分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的进程
  • 网络层与运输层的区别
    • 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端对端的逻辑通信
    • 网络层只对首部差错检验,运输层要对报文进行差错检测
  • 运输层需要面向连接的TCP协议,无连接的UDP协议
  • 运输层为高层用户屏蔽了下面的网络核心细节
  • 采用TCP时,尽管下面的网络不可靠,但逻辑通信相当于一条全双工的可靠信道。
  • 采用UDP时,逻辑通信仍是不可靠的

1.2.运输层的两个主要协议

  • 用户数据报协议UDP
    • 不需要先建立连接
    • 虽然不提供可靠交付,但很有效
  • 传输控制协议TCP
    • 面向连接的服务
    • 可靠交付
    • 开销大

1.3.运输层端口

  • 在协议栈层间的抽象的协议端口是软件端口
  • 软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址
  • TCP/IP使用16位的端口号
  • 端口号只具有本地意义,标志的是本机中的进程。
  • 不同主机相同进程号是没有关联的
  • 端口号分类
    • 服务端使用的端口号
      • 熟知端口号(系统端口号):0-1023
        • 21:FTP
        • 23:TELNET
        • 25:SMTP
        • 53:DNS
        • 69:TFTP
        • 80:HTTP
        • 161:SNMP
        • 162:SNMP(TRAP)
        • 443:HTTPS
      • 登记端口号:1024-49151
    • 客户端使用的端口号:49152-65535
      • 短暂端口号,通信结束后就注销,供给其他进程使用

2.用户数据报协议UDP

2.1.概述

  • 无连接的:所以不需要使用套接字建立连接,TCP需要两个套接字
  • 不保证可靠交付
  • 面向报文:保留边界(不分片,IP处理)
  • 没有拥塞控制
  • 支持一对一,一对多,多对一,多对多
  • 首部开销小,8字节

2.2.首部格式

  • 总共8个字节,4个字段,一个2字节
  • 源端口:需要对方回信时选用,不用则0
  • 目的端口
  • 长度:用户数据报长度,最小8字节(只有首部)
  • 检验和:全检验,首部——数据

3.传输控制协议TCP

3.1.主要特点

  • 面向连接
  • 每条TCP连接只能有两个端点:点对点
  • 可靠交付
  • 全双工
  • 面向字节流
  • TCP可以划分片,再传给IP

3.2.TCP连接

  • TCP把连接作为最基本的抽象

  • TCP所谓的点对点叫做:套接字socket:(IP地址:端口号)

  • 每一条TCP连接唯一的被通信两端点确定

3.3.可靠传输工作原理

  • 理想的传输条件的特点:
    • 传输信道不产生差错
    • 不管发送方的速度多少,接收方总能处理

3.3.1.停止等待协议

  • 即发送完一个分组就停止,等待对方确认
  • 出现差错时:
    • 超时重传:发送方过了一段时间未收到确认信息,就认为信息丢失,重传。超时计时器
    • 发送方在发送完一个分组后,必须暂时保留已发送的副本
    • 分组和确认分组都要编号
    • 超时计时器的时间应该比数据在分组传输的品军防范时间更长一些
  • 确认丢失和确认迟到
    • 假设接收方在发送 确认信号后 ,再次收到了相同编号的数据报,要采取两个动作
      • 丢弃这个重复分组
      • 向A发送确认
  • 通过以上这些,就可以在不可靠的传输网络实现可靠的通信,称之为自动重传请求ARQ
  • 信道利用率:发送时长/(发送市场+往返市场+接收方发送确认信号的时长)

3.4.连续ARQ协议

  • 即 流水线传输
  • 发送窗口(多个)
  • 接收方采用累计确认
  • 实现容易,但不能向发送方反映出接收方已经正确收到的所有分组的信息(中间出错,中间后面的需要全部重传)

3.5.TCP报文段的首部格式

  • 固定20字节
  • 源端口和目的端口 : 各占2字节
  • 序号:4字节,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号
  • 确认号:期望收到对方下一个报文段的第一个数据字节的序号
    • 若确认号为N,则表示N-1为止的所有数据都以正确接收
  • 数据偏移:4位,指出TCP报文段的首部长度。
    • 数据偏移的单位是32位字,即4字节,4位能表示的最大数为15,则首部最大长度为60字节
  • 保留:6位。今后使用
  • -----------下面为6个控制位----------
  • 1
  • 推送PSH:当发送方需要立即回复时,可以PSH置1
  • 复位RST:1表示TCP连接中出现严重差错,必须释放连接,重置
  • 同步SYN:SYN为1,ACK为0时表示这是一个连接请求报文,若对方同意,则在响应的报文段中使得两个都为1,表示这是一个连续请求报文
  • 终止FIN:1表示发送完毕,并释放连接
  • ---------控制位结束----------------------
  • 窗口:占2字节,接收窗口(而不是发送窗口)。窗口值作为接收方让发送方设置其发送窗口的依据(动态变化)
  • 校验和:2字节,全校验
  • 紧急指针:2字节,仅在URG置1时有意义,指出了紧急数据的位置
    • 即使窗口为0,也可以发送紧急数据
  • 选项:长度可变,40字节(扩展首部)
    • 最大报文段长度MSS:每一个TCP报文段中的数据字段(不包括首部)的最大长度、
    • ······

3.6.TCP可靠传输的实现

3.6.1.以字节为单位的滑动窗口

3.6.2.超时重传时间RTO的选择

  • RTT:报文段的往返时间
  • RTTS:加权平均往返
  • RTO略大于RTTs
  • 如果报文重传的,就不采用其往返时间作为样本(防止影响RTTs)

3.6.3.选择确认SACK

3.7.TCP流量控制

3.7.1.利用滑动窗口实现流量控制

  • 流量控制:让发送方的发送速率不要太快,接收方要来得及接收
  • 发送方决定接收方窗口
  • TCP窗口单位是字节,不是报文段
  • 会产生死锁,解决:
    • TCP会为每一个连接设有一个持续计时器
    • 会发送零窗口探测报文段

3.8.TCP的拥塞控制

  • 需求>可用
  • 拥塞控制:防止过多的数据注入到网络中,防止过载。
    • 这是一个全局性的过程
  • 流量控制往往是点对点通信量的控制,端对端的问题

3.8.1.TCP拥塞控制方法

  • 方法:
    • 慢开始
    • 拥塞避免
    • 快重传
    • 快恢复
  • 慢开始和拥塞避免
    • 基于窗口的控制,拥塞窗口
    • 原则:只要网络没有出现拥塞,拥塞窗口就可以在增大一些。但只要出现拥塞或者可能出现拥塞,就要减小
    • 判断拥塞的依据:是否超时
    • 慢开始:每经过一个传输轮次,拥塞窗口cwnd就翻倍。2的指数增长
    • 为防止 慢开始 的过度增长,设置一个 慢开始门限ssthresh,达到ssthresh后就执行拥塞避免
    • 拥塞避免:每经过一个传输轮次,拥塞窗口cwnd就+1
    • 当随着窗口增多,出现超时(严重),将ssthresh设置为cwnd的一半,窗口数从1开始,慢开始增长
  • 快重传和快恢复
    • 当随着窗口增多,出现三次ACK确认未回复( 信息丢失,可能不是拥塞,不严重),执行快重传和快恢复
    • 快重传:收到三个相同的重复确认,立刻重传该报文。并进行快恢复
    • 快恢复:将ssthresh设置为cwnd的一半,拥塞避免增长,(+1增长)

3.9.TCP的运输连接管理

  • 运输连接有三个阶段:连接建立,数据传输,连接释放

  • TCP连接建立过程中要解决三个问题:

    • 每一方能明确知道对方的存在
    • 允许双方协商参数
    • 资源分配
  • TCP建立的访问方式:C/S

3.9.1.TCP的连接建立

  • 握手:TCP建立连接的过程。要交换三个TCP报文段。
  • !三报文握手表示:一次握手。不是三次握手!
  • 一次握手(三报文握手)的过程:
    • A—>B
    • A创建传输控制模块TCB,向B发送请求,SYN=1,初始序号seq=x。
      • TCP规定,该报文段不可携带数据,但要消耗一个序号
    • B收到后,同意连接,向A发送确认,SYN=1,ACK=1,ack=x+1,也为自己选择一个初始序号seq=y
      • TCP规定,该报文段不可携带数据,但要消耗一个序号
      • 这时TCP进程进入SYN-RCVD(同步收到)状态
    • A收到确认后,还要再给B发出确认。ACK=1,ack=y+1,seq=x+1
      • TCP规定,该报文段可以携带数据,如果不携带,则不消耗序号,下一个数据报文段的序号仍是seq=x+1
    • 最后这次确认是为了,防止已失效的连接请求报文突然又传送到了B,产生错误

3.9.2.TCP的连接释放

  • 过程:
    • 双方都可主动释放连接
    • A向TCP发出连接释放报文段,FIN=1,seq=u.
      • A进入FIN-WAIT-1状态,等待B的确认,FIN会消耗序号
    • B收到后发送确认,ack=u+1,seq=v
      • B进入了CLOSE-WAIT关闭等待状态
    • TCP服务器通知高层,连接释放了,此时TCP的连接属于半关闭,A不可发送数据,但B向A发,A还是要收
    • 若B没有需要发送的数据,就通知TCP释放连接
    • B发送报文:FIN=1,seq=w,ack=u+1
      • B进入了Last-ack最后确认,等待A确认
    • A收到后,发出确认,ACK=1,ack=W+1,seq=u+1
    • 到现在,TCP也释放,进入TIME-WAit状态。必须经过 时间等待计时器的时间2MSL A才进入Closed状态
      • MSL:最长报文寿命
      • 这是为了保证A发送的最后一个ACK报文段能到达B
    • 以上为四报文握手
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容

  • 一、运输层协议 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通...
    MachinePlay阅读 812评论 0 0
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 2,410评论 0 2
  • 一、基础概念 服务对象:进程 功能:逻辑通讯 载体:报文段 工作环境:端系统 运输层协议  TCP:为进程提供可靠...
    IT白阅读 397评论 0 0
  • 计算机网络-运输层 运输层协议概述 进程间的通信 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,...
    CandyTong_阅读 493评论 0 1
  • 1.UDP和TCP的对比 UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议 当运输层采用面向连接的...
    冰菓_阅读 407评论 0 11