[计算机网络]Ch.6 传输层

传输层

1 传输层功能与简介

为什么需要两个不同的独立控制层

  • 网络层运行在由运营商ISP操作的路由器上,用户无法控制到这一层
    设置一个层位于网络层之上可以让用户控制服务质量
  • 传输层原语,是对网络层(网络层由于网络的不同,会有不同的原语)的抽象,提供统一接口(便利,降低开发难度)

传输层的主要功能
传输层是整个协议栈(TCP/IP)的核心,传输层的任务是提供可靠的、高效的数据传输

  • 传输服务:(面向连接面向无连接
  • 在该层还需对字节流进行数据分段(块)和重组
  • 保证数据可靠传输和进行流量控制
  • 建立端到端的操作;【端点实质是机器上的套接字】
  • 从一端主机向另一端主机发送数据段

传输层使整个报文到达了该计算机上正确的进程
传输层的最终目标是向它的用户(应用层)提供高效、可靠和性价比高的服务【例如从一台主机到另一台主机的报文到底送给这台机器的email去解析,还是送给播放器播放,还是浏览器解析】

  • 虽然与链路层相似(流控制、差错控制、报文排序),但传输环境不同(传输层-通信子网,链路层-物理信道)

1.1 简单的传输层服务原语:

image.png

1.2 传输层的数据传输单元(PDU)是TPDU

image.png

2 传输层协议

2.1 UDP

  • UDP 是一个无连接的(connectionless)的传输层协议
  • 提供端点标识,端到端的数据传输
  • 不提供差错检测和可靠传输。但简洁高效

端口(port)定义
16 位,共有 216个端口
端口范围:0~65535
<1023 : 用于公共应用(保留,全局分配,用于标准服务器),IANA分配;
1024~49151 :用户端口,注册端口;
> 49152 : 动态端口,私人端口。

2.1.1 UDP校验和

image.png
image.png

2.2 TCP(传输控制协议)

TCP (Transmission Control Protocol) 是专门为了在不可靠的互联网络上提供可靠的端到端字节流而设计的
TCP必须动态地适应不同的拓扑、带宽、延迟、分组大小和其它的参数,并且当有错误的时候,能够足够健壮

TCP服务模型:

  • 要想获得TCP服务,发送方和接收方必须创建一种称为套接字( sockets )的端点( end points)
  • 每个套接字是包含一个IP地址和一个16位的端口( port )
  • 通信进程的全球唯一标识
    ·三元组:协议、本地地址、本地端口号
    ·五元组:协议、本地地址、本地端口号、远端地址、远端端口号
  • 所有的 TCP 连接是全双工的(同时双向传输)和端到端的(每条连接只有两个端点)
  • TCP 不支持组播和广播
  • TCP连接是字节流而不是消息流

2.2.1 tcp数据段头

image.png
  • 源端口目的端口字段标明了一个连接的两个端点
  • 序列号– 字节号 (32 位)
    ·初始序列号(ISNs) 随机产生
    ·SYN :携带了ISNs和SYN控制位的数据段
  • 确认号 – 期望接收的字节号(32位)
  • TCP 段头长度 – TCP段头长度,单位32位
2.2.1.1数据段头解释

image.png

保留域/字段

  • PSH表示这是带有PUSH标志的数据(接收方收到这样的数据,应该立刻送到上层,而不需要缓存它)

  • RST 被用来重置一个已经混乱的连接

  • SYN用在连接建立的过程
    ·当SYN=1,ACK=0, 连接请求
    ·当SYN=1,ACK=1, 连接接受

  • FIN 被用来释放连接,它表示发送方已经没有数据要传输了,但是可以继续接收数据.

  • Windowsize – 告诉对方可以发送的数据字节数(从确认字节号开始(决定于接收方))【流控】

  • Checksum –提供额外的可靠性校验的范围包括头部、数据和概念性的伪头部

TCP头部范围(5x4B15x4B(最大数值))--(20B60B)

2.2.2 TCP建立连接-三次握手

  • 一方(server)被动地等待一个进来的连接请求
  • 另一方(the client)通过发送连接请求,设置一些参数
  • 服务器方回发确认应答
  • 应答到达请求方,请求方最后确认,连接建立


    image.png
image.png
image.png
  • 正常情况下,发送TCP端顺序如a所示
  • 两主机同时企图在一对套接字之间建立连接,结果恰好只建立了一个连接,表项为(x,y)
    SYN泛洪
    `恶意发送SYN段请求服务器的连接,但又故意不完成连接建立的后续服务,以此消耗一台主机的资源。

2.2.3 TCP 连接释放(四次挥手)

释放连接

  • 任何一方在没有数据要传送的时候,都可以发送一个FIN置位了的 TCP 数据段
  • 当FIN被确认的时候,该方向的连接被关闭
  • 当双向连接都关闭了的时候,连接释放

两军队问题

image.png

  • B2向B1发送今晚十二点一起发起总进攻【合作才能打败白军队】
  • B1收到后,不知B2是否会冲下去【因为B2不知道B1是否收到信】,所以发送确认邮件给B2(让其今晚十二点也冲下去)【如果只有B1冲下去肯定失败】
  • B2收到邮件,但不知道B1是否知道自己收到邮件【B1如果因为不知道自己是否收到,而不敢冲下去,那自己冲下去也是输】。保险起见,发送给B1【我收到了你的信,咱们今晚一起冲下去】

难题在于最后发送的一方永远无法知道自己的信对方有无收到

为了避免两军队(two-army)问题,使用定时器

  • 如果一方发送了FIN数据段出去却在一个设定的时间没有收到应答,释放连接
  • 另一方最终会注意到连接的对方已经不在了,超时后连接释放

半开放连接(half- open)

  • 发送者将放弃发送且释放连接
    但是,另外一端却不知道这些情况【初始DR、重传都丢失】,仍然处于活跃的状态
  • 杀死半开放连接的方式:如果在一定的时间内,没有TPDUs 到达的话,连接自动释放
    ·这个TPDU是哑TPDU(dummy TPDU)

TCP是全双工的,连接必须是双向的。半开半闭的连接必须杀掉

2.2.4 TCP滑窗技术与传输策略

image.png
image.png

TCP 传输策略
发送方(Nagle’s algorithm)

  • 尽量不发送数据含量小的数据段
  • 缓存应用层的数据,达到一定量再发送

接收方(Clark’s solution)

  • 不请求对方发送短数据段(window size)
  • 延迟窗口变更信息,使接收缓冲区足够大

2.2.5 TCP拥塞控制

分组守恒:当有一个老的分组离开之后才允许新的分组注入网络
TCP希望通过动态维护窗口大小来实现这个目标

拥塞检测Congestiondetection拥塞标记
所有的互联网TCP算法都假定超时由拥塞引起的,并且通过监视超时的情况来判断是否出现问题

image.png

拥塞控制Congestionprevention

  • 当一个连接建立的时候,双方选择一个合适的窗口大小,接收方根据自己的缓冲区大小来指定窗口的大小。
  • 如果发送者遵守此窗口大小的限制,则接收端不会出现缓冲区溢出的问题,但可能由于网络内部的拥塞而发生问题


    image.png
2.2.5.1 决定拥塞窗口大小的算法:

慢启动算法(Slow Start) (尝试的过程):

  • 当连接建立的时候,发送者用当前使用的最大数据段长度初始化拥塞窗口,然后发送一个最大的数据段
  • 如果在定时器超期之前收到确认,则将拥塞窗口翻倍,然后发送两个数据段。。。。。直至超时(或达到接收方窗口的大小)
  • 确定出拥塞窗口的大小

如:如果试图发送 4096 字节没有问题,但是发送8192字节的时候,超时没有收到应答,则拥塞窗口设为4096个字节

image.png
image.png

2.2.6 定时器的作用

最重要的定时器是重传定时器

持续定时器(persistence timer),用来避免如下的死锁( deadlock )发生

  • 接收方发送了一个窗口数为零的确认(窗口更新),告诉发送方等待
  • 稍后,接收方空出了缓冲,发送更新窗口的数据段,但是,很不幸,该分组丢失啦!
  • 现在,收发双方都在等待对方发送数据段过来,但永远等不到!死锁产生


    image.png

保活定时器(keep-alive timer)

  • 用来检查连接是否存活,当一个连接空闲的时间超过保活定时器的时间,该连接将被杀掉
  • 最后一个定时器是在关闭时刻处于TIMED WAIT 状态中使用的定时器,它运行两倍的最大分组生存时间,以确保连接关闭之后,该连接上的所有分组都完全消失

3 TCP UDP比较

TCP

  • 可靠传输方式
  • 可让应用程序简单化,程序员可以不必进行错误检查、修正等工作
    UDP
  • 为了降低对计算机资源的需求,如DNS
  • 应用程序本身已提供数据完整性的检查机制,勿须依赖传输层的协议来保证
  • 应用程序传输的并非关键性的数据,如路由器周期性的路由信息交换
  • 一对多方式,必须使用UDP(TCP限于一对一的传送),如视频传播
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容