| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 王道考研计算机网络第五章——传输层 -> 正文阅读 |
|
[网络协议]王道考研计算机网络第五章——传输层 |
5.1 传输层概述5.1.1 传输层为应用层提供通信服务,使用网络层服务 1 传输层功能1.传输层提供进程和进程之间的逻辑通信。
3.传输层对收到的报文进行差错检测。
4.传输层的两种协议。? 2 传输层的两个协议打油诗:传输层有两个好兄弟,大哥TCP和二弟UDP,大哥靠谱,二弟不靠谱。 面向连接的传输控制协议TCP:
无连接的用户数据报协议UDP:
5.1.2 传输层的寻址与端口复用:应用层所有的应用进程都可以通过传输层再传输到网络层。 分用:传输层从网络层收到数据后交付指明的应用进程。 通信过程分析:如果要发送数据给一个主机,只需要知道它的IP地址,就能寻找到主机所在的网络;进入所在网络后可以根据MAC地址定位到具体的主机(网络层);找到主机后,还需要找到主机中接收该数据的进程(传输层)。如何找到该进程呢?——根据端口(逻辑端口) 端口:端口是传输层的SAP(服务访问点/接口),标识主机中的应用进程。
端口号:端口由具体的数字标识叫做端口号,端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。 端口号范围:
巧记一些应用程序端口号: 套接字:
5.2 用户数据报协议UDP5.2.1 UDP数据报1 UDP概述UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
? 2 UDP首部格式UDP首部字段(8B):
还有一种出错情况:分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。 5.2.2 UDP校验伪首部:伪首部只有在计算检验和时才出现,不向下传送也不向上递交。伪首部伪的就是IP数据报的首部。
如何用伪首部校验UDP数据报有没有发送差错: 在发送端:
在接收端: 5.3 TCP协议5.3.1 TCP协议特点和TCP报文段1 TCP协议特点1.TCP是面向连接(虚连接,并不是物理连接)的传输层协议。打call
5.TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。字节流中的每一个字节都按顺序编号。
举例: 2 TCP报文段首部格式(重点,单位4B)?固定首部(20B):
选项(长度可变):最大报文段长度MSS、窗口扩大、时间戳、选择确认... 填充:全0,保证TCP首部是4B的倍数,填充+选项=4B。 5.3.2 TCP连接管理TCP连接传输三个阶段:连接建立——数据传送——连接释放 1 TCP连接建立(三次握手)?TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。 假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器中的TCP建立一条TCP连接: TCP连接建立过程: ?ROUND 1:
ROUND 2:
ROUND 3:
2?SYN洪泛攻击SYN洪泛攻击发生在OSl第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送 解决办法:设置SYN cookie 3 TCP的连接释放(四次握手)? ?参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量) 将被释放。?? ?ROUND 1:
ROUND 2:
ROUND 3:
ROUND 4:
个人理解:确认号字段是对对方数据报序号的下一个期待。序号字段第一次由自己随机分配序号,在之后的互相发送过程中,序号字段按照对方期待的来填写。 5.3.3 TCP可靠传输传输层:使用TCP实现可靠传输(UDP依靠应用层实现可靠传输) 可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。 1 TCP实现可靠传输的四种机制1 校验:与UDP校验一样,增加伪首部,通过使用二进制反码求和的方法来判断是否发生错误。 2 序号 ? ?虽然我们说TCP是面向字节流的,但是实际发送时,是把一些字节放一起组成报文段。报文段大小是不定的。 3 确认 ?
?4 重传
有没有什么办法,在超时事件发生之前,就知道发送方有没有丢失报文段,可以尽快重传?——冗余ACK(冗余确认) 冗余ACK(冗余确认): 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。 举例:发送方已发送1,2,3,4,5报文段
2 TCP的窗口和协议?滑动窗口,停等协议、GBN协议、SR协议等在链路层已经讲过,原理差不多。根据上面所讲的冗余确认可以看出,TCP常使用的是GBN、SR协议。 5.3.4 TCP流量控制1 流量控制流量控制:让发送方慢点,要让接收方来得及接收。 TCP利用滑动窗口机制实现流量控制。 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。 2 流量控制过程A向B发送数据,连接建立时,B告诉A:“ 我的rwnd=400 (字节)”,设每一个报文段100B,报文段序号初始值为1。 ?TCP采用的是累计确认,并不使用停等协议。主机A给B发送了几个报文段,主机B才给A发送一个确认报文段。TCP流量控制可以看做累计确认+SR选择重传协议+动态调整接收窗口。 主机B给主机A发送确认报文段中窗口字段为rwdm=0(零窗口)时,主机A不能再发送数据给主机B,而主机B又在等主机A发送数据,于是主机A和B互相死等,此时就会造成类似操作系统中的死锁现象。如何解决?——持续计时器 3 持续计时器
5.3.5 TCP拥塞控制1 拥塞控制出现拥塞的条件:对资源需求的总和>可用资源 拥塞导致的问题:网络中有许多资源同时呈现供应不足——>网络性能变坏——>网络吞吐量将随输入负荷增大而下降 拥塞控制目的:防止过多的数据注入到网络中。这是一个全局性问题。 拥塞控制与流量控制的区别:拥塞控制是多台主机同时使用网络资源给一个接收方发送数据,使得网络非常繁忙,接收方不知道是哪个主机的问题,拥塞控制是一个全局性问题。流量控制是点对点问题,让发送方发慢点。 2 拥塞控制四种算法四种算法:
为了方便讨论,假定如下: 1.数据单方向传送,而另一个方向只传送确认(实际传输数据是双向的) 2.接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
接收窗口与拥塞窗口区别:
3 慢开始和拥塞避免算法拥塞窗口最开始的初始值:默认为1即cwnd=1,为了讨论方便,这里1不是一个字节而是一个报文段,报文段的长度是一个最大报文段长度MSS。 慢开始算法:拥塞窗口指数规律增长,拥塞窗口在发送方收到确认报文时增长。 ssthresh值:拥塞窗口增加到ssthresh(慢开始限值)的初始值后,开始执行拥塞避免算法。并且新的ssthresh值是发生网络拥塞时窗口的一半。 拥塞避免算法:每次到达ssthresh值后,线性增加拥塞窗口。 网络拥塞:发生拥塞后拥塞窗口马上降为初始值cwnd=1。 一个传输轮次:
4 快重传和快恢复算法快重传:?发送方收到3个重复的冗余ACK?——>认为该报文段丢失,重传该报文段。在超时计时器之前执行快重传可以实现快速重传报文段。 快恢复:发生拥塞后不会像慢开始一样拥塞窗口降为初始值,而是降到新的ssthresh值。 拥塞避免:快恢复后继续执行拥塞避免,线性增加拥塞窗口。 ? ? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:28:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |