第8章 传输层 8.1传输层服务 8.2端口寻址 8.3建立连接 8.4Internet中的传输层协议 8.5Berkeley Socket

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
NAT与ICMP交互.
網路程式設計 (Network Programming)
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
第 12 章 UDP 與 TCP.
Chapter 12 UDP 與 TCP.
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
第1章 概述.
数据转发过程.
第 7 章 运输层 基本内容 传输层的概念,TCP/IP体系中的传输层,端口的概念,用户数据报协议UDP,传输控制协议TCP,TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。 重点掌握 TCP/IP体系中的传输控制协议TCP:TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。
主页:xgxy.cug.edu.cn/rjgcx/lzw
第八课 TCP/IP协议.
Socket.
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
Author: Shigeki Takeuchi,Hiroyuki Koga, Katsuyoshi Iida,
Lab312.
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
第 12 章 UDP 與 TCP.
Chapter 3 Transport Layer (傳輸層).
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
TCP協定 (傳輸層).
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
TCP和UDP基本原理.
TCP报文格式.
TCP/UDP協定 10-1 TCP/UDP簡介 10-7 採用TCP或UDP 10-2 連接埠編號 10-8 UDP標頭格式
Internet Protocol (IP)
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
Chapter 3 Transport Layer
第3讲 传输层之一 本讲目的: 本讲概述: 理解传输层服务的原理: 传输层的服务 复用/分用 无连接的传输: UDP 可靠数据传输原理
第九章 传输控制协议 (TCP).
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
网络常用常用命令 课件制作人:谢希仁.
第十讲 TCP协议 协议概述 报文段格式 差错控制 流控和拥塞控制 TCP连接管理 TCP性能问题 TCP软件设计 2018/12/7
实用组网技术 第一章 网络基础知识.
第4章 OSI傳輸層.
第4讲 传输层之二 本讲目的: 本讲概述: Internet传输层的实现和实例 面向连接的传输: TCP TCP拥塞控制 拥塞控制原则
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
Chapter 7 传输层.
计算机网络(第 5 版) 第 5 章 传输层.
计算机网络 Computer Network
Chapter 12 傳輸控制通訊協定.
计算机网络 第 7 章 运输层 课件制作人:谢希仁.
實驗目的 明瞭可靠傳輸層的基礎觀念 TCP協定下區段資料傳送的格式
第七讲 网际协议IP.
NS2 – TCP/IP Simulation How-Wei Wu.
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
第十三章 TCP/IP 與 Internet 網路連結技術
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
TANet PROTOCOL ANALYSIS - WIRESHARK - 350.
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
Westmont College 网络互连 Part 4 (传输协议, UDP and TCP, 协议端口)
Web Server 王宏瑾.
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
  传输控制协议 TCP TCP TCP 发送端 接收端 应用进程 应用进程 向发送缓存 写入数据块 从接收缓存 读取数据块 … …
DQMClientDim.cxx及双光子练习
Source: Journal of Network and Computer Applications, Vol. 125, No
Speaker : Chang Kai-Jia Date : 2010/04/26
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
2019/5/3 JAVA Socket(UDP).
数据报分片.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
Presentation transcript:

第8章 传输层 8.1传输层服务 8.2端口寻址 8.3建立连接 8.4Internet中的传输层协议 8.5Berkeley Socket 用户数据报协议UDP 传输控制协议TCP 8.5Berkeley Socket

logical end-end transport 8.1传输层服务 application transport network data link physical logical end-end transport 传输层是整个协议层次结构的核心,它为高层屏蔽任何与网络有关的操作,传输层是端到端协议,与使用的网络无关

为应用进程提供了逻辑通信信道 应用进程 应用进程 AP1 AP4 5 4 3 2 1 AP2 AP3 5 4 3 2 1 端口 端口 传输层提供应用进程间的逻辑通信 IP 层 主机 A 主机 B 路由器 1 路由器 2 AP1 AP3 LAN1 WAN LAN2 AP2 AP4 IP 协议的作用范围 传输层协议 TCP 和 UDP 的作用范围

向上层提供的服务 传输层服务有两类: 面向连接的传输服务 无连接的传输服务 TSAP NSAP

8.2端口寻址 由于传输层为上层提供复用机制,因此,当一个传输层进程希望与另一个进程建立连接时,必须指定对方传输层所对应的TSAP地址 Host2的时间服务进程运行在122号TSAP上,等待服务请求。 Host1应用进程发出连接请求,并指明源TSAP=6,目的TSAP=122。 网络层实体向Host2建立连接(对于非连接网络,仅向Host2发送分组) 问题:如何知道对方的TSAP?

TSAP的获取方法 服务进程固定在特定的TSAP上。 只适用于少数关键的服务 每个系统都有一个进程服务器,它连接在众所周知的一组TSAP上,用户为了与目标服务进程通信,首先必须与进程服务器通信,通过它启动目标服务进程。 采用名字服务器,当新的服务被创建时,必须向名字服务器注册,给出服务名和TSAP。用户在需要相应的服务前先查找名字服务器。

主机进程标识 网络服务访问点(NSAP)和传输服务访问点(TSAP)即{NSAP,TSAP}标识了一个主机上的进程,需要注意的是NSAP是ISO定义的概念,一般用于面向连接的网络,例如ATM、X.25、Frame Relay等。 在TCP/IP中,NSAP与IP地址对应,TSAP对应着端口号(port),再加上所采用的协议(TCP/UDP),即{IP地址,端口号,协议类型}唯一标识一个主机上传输服务的用户进程,而{源/目的IP地址,源/目的端口号,协议类型}五元组标识一个传输连接的数据流。

8.3建立连接 一般来说,一个连接从连接请求的发出到接收到连接证实消息就可以建立一个连接,但当网络丢失、存储,再重传重复分组时,一个连接也会被建立多次 三步握手 主机1选择一个序号x,并向主机2发送包含该序号的连接请求TPDU 主机2应答接受连接TPDU,TPDU中包含确认号x和序列号y 主机1在其发送的第一个数据中采用序列号为x,并确认主机2的序列号y

三步握手 CR-连接请求;ACK-接受连接 图a为正常操作时连接的建立;图b为重复的CR突然出现; 图c为重复的CR和重复的ACK

释放连接 非对称释放 连接的任何一方都可以断开整个连接 对称释放 把连接看作是由两个独立的单向连接,并要求单独释放每一个单向连接

非对称释放 CR-连接请求 ACK-接受连接 DR-连接断开请求 当连接建立以后,主机1发送一个TPDU,它正确地到达了主机2,然后,主机1又发送一个TPDU,但是由于主机2在第二个TPDU到达之前就已经发送了DISCONNECT TPDU,因此,该连接虽然被释放,但是数据却丢失了。

对称释放 DR-连接断开请求ACK-接受断开 释放连接再次用到三步握手,一方发出释放连接请求后不立即拆除连接,而要等待对方确认;对方收到请求后,发送确认报文,并拆除连接,发起方收到确认后最后拆除连接。

(a) Response lost and subsequent DRs lost 对称释放中的分组丢失 (a) final ACK lost (a) Response lost (a) Response lost and subsequent DRs lost DR-连接断开请求ACK-接受断开

8.4 流量控制和拥塞控制 面向连接的传输服务应该提供流量控制和拥塞控制功能,核心是滑动窗口算法 流量控制:根据接收方的缓存容量来动态地调整发送方的窗口大小,避免一个快速的发送方淹没一个慢速的接收方。 拥塞控制:根据网络的承载容量来动态地调整发送方的窗口大小,避免发送方同一时刻有太多未被确认接收的TPDU

8.4 Internet中的传输层协议 Internet中定义了两个不同的传输层协议 用户数据报协议(UDP:User Datagram Protocol) 传输控制协议(TCP:Transmission Control Protocol) 两个对等传输实体在通信时传送的数据单位称为传输协议数据单元(TPDU: Transport Protocol Data Unit) 在UDP中,TPDU称为数据报(datagram)TCP中,TPDU称为TCP数据段(segment)

UDP与TCP UDP提供无连接的服务,在传送数据之前不需要先建立连接。对方的传输层在收到 UDP数据报后,不需要给出任何确认。虽然 UDP 不提供可靠投递,但在某些情况下 UDP 是一种最简单有效的工作方式。例如视频点播等实时应用常使用UDP TCP 提供面向连接的服务。由于 TCP 要提供可靠的、面向连接的传输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的头标增加了更多的域,还要占用许多的处理机资源。

端口 端口就是传输服务访问点(TSAP)。 端口的作用就是让各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其数据段或者报文中的数据向上通过端口交付给应用层相应的进程。 从这个意义上讲,端口是用来标识应用进程。

            基于端口的进程间通信 发送方 接收方 应用进程 应用进程 应 用 层 端口 端口 传 输 层 TCP 复用 UDP 复用 TCP 解复用 UDP 解复用 UDP 用户数据报 UDP 用户数据报 TCP 数据段 TCP 数据段 网 络 层 IP 复用 IP 解复用 IP 分组 IP 分组

端口号 端口用一个 16 bit 端口号进行标志,共64K个端口号对一台主机来说是足够的。 端口号只具有本地意义,即端口号只是为了标识本机上的各个应用进程。在Internet中不同主机的相同端口号是没有联系的。 端口号分为两类:一类是知名端口,其数值一般为 0-1023,一般分配给一些常用的服务进程。另一类则是一般端口,用来随时分配给请求通信的客户进程。

8.4.1 用户数据报协议-UDP User datagram protocol,RFC 768 无连接的传输服务 不可靠(Unreliable) 高效率

UDP头标 字节 4 4 1 1 2 源 IP 地址 目的 IP 地址 17 UDP长度 字节 12 2 2 2 2 伪头标 源端口 协议 目的IP地址 源IP地址 IP伪头标 UDP头标 字节 4 4 1 1 2 源 IP 地址 目的 IP 地址 17 UDP长度 字节 12 2 2 2 2 伪头标 源端口 目的端口 长 度 检验和 UDP 用户数据报 UDP头标 数 据 发送在前 IP头标 数 据 IP 数据报

使用UDP协议传输消息

UDP应用 具有简单高效的特点 客户-服务器模式应用 话音、视频等实时多媒体应用 DNS:Domain Name System RPC:Remote Procedure Call 话音、视频等实时多媒体应用

8.4.2 传输控制协议-TCP Transmission Control Protocol-RFC 793 TCP travels in IP datagrams Internet routers only look at IP header to forward datagrams TCP at destination interprets TCP messages

TCP连接 TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为套接口(socket),或套接字、插口。 套接口和端口、IP 地址的关系是: 端口号 1500 IP 地址 131.6.23.13 131.6.23.13, 1500 套接口(socket) 一条TCP连接是由发送方套接口和接收方套接口加上协议类型来唯一标识的,即TCP连接用五元组<源端IP地址、源端口号、目的IP地址、目的端口号、协议>来唯一标识。

TCP Features TCP具有以下特性 : 数据流传输(Stream Data Transfer) 可靠(Reliability) 全双工(Full Duplex) 复用(Multiplexing) 逻辑连接(Logical Connections) 流量控制(Flow Control) 拥塞控制(Congestion Control)

TCP Segment Format

TCP Segment Format 源端口/目的端口(Source/ Destination Port ) 16位的端口号 序列号(Sequence Number ) 标识本数据段中第一个字节在数据流中的位置。 确认号(Acknowledgment Number) 标识本数据段的接收方下一个期待接收的字节编号。 头标长度(Header Length) 4bits 指明数据段的头标长度,单位是32位,随选项长度而定 保留(Reserved):6bits,置0

TCP Segment Format - 6 Flags URG 指示紧急指针有效. ACK 指示确认段有效 PSH Push 操作,置1时,即将本段迅速发送 RST 重新连接. SYN 同步序列号,用于建立连接 FIN 发送方已发送完数据,用于释放连接

TCP Segment Format 窗口大小(Window size) 检验和(Checksum) 用于流量控制,窗口指示在对方确认了的字节之后还可发送的字节数。 检验和(Checksum) 用来检验TCP报头和数据的完整性,检验时,要加上伪IP头标 紧急指针(Urgent Pointer) 指向紧急数据的最后一个字节,该指针仅在URG置1时有效 选项(Options )

TCP在不可靠的IP上为应用进程提供可靠的数据传输服务 连接建立:在发送主机和接收主机之间协商初始序列号 连接管理:使用滑动窗口算法对数据传输进行管理,包括确认重发、流量控制和拥塞控制等 连接释放:数据传输结束后释放连接,发送主机和接收主机释放为该连接分配的资源

TCP采用三步握手的方法建立连接 客户请求连接TCP数据段:SYN置1,ACK置0,选择初始序列号SEQ=x 服务器响应连接TCP数据段:SYN置1,ACK置1,选择初始序列号SEQ=y,并且对x进行确认,设置ACK=x+1 客户响应连接TCP数据段: ACK置1,SEQ=x+1,对y进行确认,设置ACK=y+1 通过三步握手,host1和host2之间完成初始序列号、窗口大小、最大数据段尺寸等参数的协商,并且分配连接所需要的资源

TCP请求连接碰撞 使用三步握手,即使两台主机同时想在相同的套接口之间建立一个TCP连接而发生冲突,也可以正常工作。但此时只有一个TCP连接建立起来。因此TCP连接由五元组唯一标识。

TCP连接建立定时器 Connection Establishment Timer 当SYN数据段发出时,连接建立定时器就开始计时,如果在一定时间(例如65秒,可设置)内未收到响应,则连接建立失败。

TCP采用对称释放法释放连接 TCP的全双工连接可看成一个双单工的连接,每个单工连接都独立地释放。 通信双方必须都向对方发送FIN=1的TCP段并得到对方的应答,连接才能被释放,有四个阶段。 可以将第一个ACK数据段和第二个FIN数据段合并,从而变为三步握手。 为防止半连接,必须使用定时器计时,对FIN数据段的应答在两个最大分组生命期内未到达,就释放连接。对方也会超时释放。 FIN ACK of FIN Host1 Host2 Time

TCP释放连接相关定时器 保持存活定时器(Keep-Alive Timer):当一个连接长时间闲置时,保持存活定时器会超时而使一方去检测另一方是否仍然存在,如果它未得到响应,便终止该连接。 闲置定时器(Quiet Timer):当TCP连接断开后,为防止该连接上的数据段还在网络上,并被后续打开的相同五元组的连接接收,要设置闲置定时器以防止刚刚断开连接的端口号被立即重新使用。

TCP 滑动窗口(Sliding Window) 可靠有序的传输 使用发送缓存和接收缓存,只有被确认,窗口才滑动。 流量控制 接收方可根据可用剩余缓冲区来指定窗口大小,当缓冲区满,接收方可以发送一个窗口大小为0的数据段,指示发送方停止发送数据。但此时仍可以发送紧急数据 (如用户紧急停止进程)和一字节的通知对方更新窗口大小的数据段。

TCP滑动窗口举例 发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的数据段,而发送窗口确定为 500 字节 发送端只要收到了对方的确认,发送窗口就可前移 发送 TCP 要维护一个指针。每发送一个数据段,指针就向前移动一个数据段的距离

发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。 现在发送端还可发送 300 字节

发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。 现在发送端最多还可发送 400 字节的数据。

举例:利用可变窗口大小进行流量控制。设主机A向主机B发送数据,双方确定的窗口值是400字节。再设每一个数据段的长度是100字节,序号的初始值是1。 我们可以注意到,主机B进行了三次流量控制,第一将窗口减小为300字节,第二次又较少为200字节,最后减少到0,既不允许对方发送数据。直到主机B重新发出一个新的窗口值为止。 主机 A 主机 B SEQ = 1 A 还能发送 300 字节 SEQ = 101 A 还能发送 200 字节 SEQ = 201 丢失! ACK = 201, WIN = 300 允许 A 再发送 300 字节(序号 201 至 500) SEQ = 301 A 还能发送 200 字节(序号 301 至 500) SEQ = 401 A 还能发送 100 字节(序号 401 至 500) SEQ = 201 A 超时重发,但不能发送序号 500 以后的数据 ACK = 501, WIN = 200 允许 A 再发送 200 字节(序号 501 至 700) SEQ = 501 A 还能发送 100 字节(序号 601 至 700) ACK = 601, WIN = 0 不允许 A 再发送(到序号 600 的数据都已收到)

TCP滑动窗口管理

傻瓜窗口症状 Silly Window Syndrome 以下情况被称为傻瓜窗口症状: 当发送方的TCP每次接收到一字节的数据后就发送 当接收方的TCP缓冲区已满,接收方会向发送方发送窗口大小为0的数据,而此时接收方的应用进程以交互方式每次只读取一个字节,于是接收方又发送窗口大小为一个字节的更新数据段,发送方应邀发送一个字节的数据,于是窗口又满了,循环往复… 解决方法: 禁止发送方发送太小的数据段,而是等到有一定数量的数据后再发送,Nagle算法 禁止接收方发送1个字节大小的窗口更新信息,而是要等到有了一定数量的可用空间后再通知对方,Clark算法

TCP 重传定时器 TCP在发送数据的同时,启动一个重传定时器,如果在超时前该数据段被确认,就关闭该定时器,否则,一旦超时则重发该数据段。

问题:超时间隔( timeout )应设为多长呢? 解决的方法是对网络的性能不断测试,采用一种不断调整超时时间间隔的动态算法

Picking a Timeout Value 对每条连接,TCP均保存变量RTT,用于存放到目的端的往返时间的最接近估计值。 当一个数据发送时,同时启动定时器,如果时间超时就重发数据段,如果在超时之前得到确认,TCP就测量所花费的时间,记为M,并根据下面公式修正RTT RTT=RTT+(1- )M 是修正因子,一般为7/8 1988年Jacobson提出了另一个公式 D= D+(1- )|RTT-M| 这里的可能不同前面的 确定当前的超时间隔Timeout=RTT+4D 对已经重发的数据段无需修改RTT,而是在每次传输失败时将超时时间加倍,直到该数据段被成功传输——Karn算法。

ACK延时定时器 Delayed ACK Timer 当TCP实体收到数据段时它必须返回确认,但并不需要立即回复,它可以在(200ms?)内发送ACK数据段,如果在这段时间内它恰好有数据段要发送,它就可以在数据段内包含确认信息,因此需要ACK延时定时器。

持续定时器 The Persistence Timer 持续定时器管理的是一种较为少见的事件,即下面要介绍的死锁情况。为了让发送方暂停发送数据,接收方发送一个接收窗口为0的确认。后来,接收方又发送了一个更新了窗口大小的数据段,但该数据段丢失,于是,双方都处于等待。 为了防止上述事情发生,发送方在收到接收方发来一个窗口为0的数据段时,就启动持续定时器,等该定时器超时还没有收到对方修改窗口大小的数据段的话,发送方就发一个1字节的探测数据段,对该探测数据段的响应应包含了窗口大小,若仍为0,则定时器清0,否则则可以发送数据。

TCP流量控制与拥塞控制 发送端的主机在确定发送数据段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。

TCP拥塞控制 Congestion Control 什么是网络拥塞 当大量分组进入通信子网,超出了网络的处理能力时,就会引起网络局部或整体性能下降,这种现象称为拥塞。 拥塞表现为路由器的队列溢出,分组丢失 拥塞会导致什么后果 拥塞使许多分组重传 导致更多的业务量,直至崩溃 拥塞的原因 路由器的处理速度、存储空间、带宽不匹配 网络负载的不平衡

接收端窗口和拥塞窗口 每一个 TCP 连接需要维护两个窗口 接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window) 拥塞窗口 cwnd (congestion window) 接收端窗口 rwnd是接收端根据其目前的可用接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP 数据段头标中的窗口大小域传送给发送端。 拥塞窗口 cwnd 是发送端根据自己估计的网络拥塞程度而设置的窗口值

发送窗口 发送窗口的上限值: 发送窗口的上限值=Min[rwnd, cwnd] 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

TCP拥塞控制算法 慢启动(slow-start) 拥塞避免(congestion avoidance)

慢启动算法 在连接建立初期,拥塞窗口初始化为该连接最大数据段的长度 发送端发送一个最大数据段,得到确认后,其拥塞窗口大小加倍,依次类推,直到数据段传输超时或已达到接收端窗口大小(兼顾拥塞和流量控制)

for (each segment ACKed) Congwin += Congwin until (loss event OR Host A Host B Slowstart algorithm one segment RTT initialize: Congwin = 1 for (each segment ACKed) Congwin += Congwin until (loss event OR CongWin > threshold) two segments four segments exponential increase in window size (not so slow!) loss event: timeout and/or three duplicate ACKs time

TCP拥塞控制算法过程 当一个连接初始化时,将拥塞窗口置为一个最大数据段长度,并设置慢启动阈值ssthresh。 发送端的发送窗口不能超过拥塞窗口和接收窗口中的最小值,并假定接收端不进行流量控制。 发送端若收到了对所有发出的数据段的确认,就在下一次发送时将拥塞窗口加倍。可见拥塞窗口从1开始按指数规律增长 拥塞窗口增长到ssthresh时,就每次将拥塞窗口加1,使拥塞窗口按线性规律增长 如果出现超时,就将当时拥塞窗口值减半,作为新的ssthresh,同时将拥塞窗口变为1 重复上述过程 慢启动 拥塞避免

TCP拥塞控制算法实例 慢启动 1

Summary TCP provides end-to-end reliable byte-stream delivery IP used for delivery to destination host Protocol ports demultiplex to destination application Positive acknowledgement with retransmission Sequence numbers detect missing, duplicate and out-of-order data Sliding window flow control Three-way handshake Congestion control

8.5 Berkeley Socket Socket的产生和发展 Socket在各种平台下的发展 最初在70年代由加州大学Berkeley分校开发,其目的是为BSD(Berkeley Software Distribution) UNIX 4.1版操作系统提供网络通信接口。 Socket在各种平台下的发展 随着Berkeley Sockets的广泛应用,九十年代初,Sun、MS等公司共同制定了适应dos和win平台的windows sockets的规范(WinSock) Sun Microsystems为Java也制定了网络通信的API Linux下的socket继承了BSD sockets的风格,但有所改动

Socket原语 TCP UDP IP Application Sockets API Transport TCP套接字原语 My 含义 SOCKET 创建一个新的通信端点 BIND 将一个本地地址关联到一个套接字上 LISTEN 宣布愿意接收连接,给出队列大小 ACCEPT 阻塞调用方,直到有人企图连接上来 CONNECT 主动尝试建立一个连接 SEND 在指定的连接上发送数据 RECV 从指定的连接上接收数据 CLOSE 释放指定的连接 Application Transport Network (Internet) Data-link (Host-to-Network) Sockets API TCP UDP My Program IP TCP套接字原语

Socket到Socket的通信 Client Process socket Server Process socket ports TCP/UDP ports TCP/UDP IP IP 在TCP/IP网络应用中,两个进程间的Socket通信的主要采用客户/服务器(Client/Server,C/S)模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务

客户需要知道服务器使用的IP地址、端口等信息 从上面所描述过程可知: 客户与服务器进程的作用是非对称的,因此编码不同。 服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。 客户需要知道服务器使用的IP地址、端口等信息

TCP Client-Server交互流程 TCP Server socket() bind() TCP Client listen() socket() accept() 建立连接 connect() 请求数据 recv() send() 响应数据 send() recv() 文件结束标识 recv() closesocket() closesocket()

UDP Client-Server交互流程

小结 掌握传输层基本功能,特别是Internet的传输层协议TCP和UDP,以及连接建立机制、流量控机制、拥塞控制机制。 基于Socket的客户/服务器编程 作业 请比较数据链路层和TCP的滑动窗口机制有什么不同,并说明为什么会有这些不同. 书:20, 23, 25, 28, 33