《计算机网络》学习总结----第五章-传输层

《计算机网络》学习总结----第五章-传输层

协议介绍:

应用层 http https ftp DNS STMP PoP3 RDP
传输层 TCP UDP
网络层 IP(RIP OSPF BGP) ICMP IGMP ARP/RARP

传输层与应用层之间关系
http=TCP+80端口
https=TCP+443
ftp=TCP+21 文件传输
SMTP=TCP+25 发送邮件
PoP3=TCP+110 接收邮件
RDP=TCP+3389 远程桌面端口
共享文件夹=TCP+445
SQL=TCP+1433
DNS=UDP+53 or TCP+53(少)

应用层协议与服务之间关系
服务运行后在TCP或UDP的某个端口侦听客户端请求。(此处服务计算机指对外服务)

IP地址定位计算机,端口定位服务。
查看自己计算机侦听的端口: netstat -an
测试原处计算机打开的端口: telnet x.x.x.x x

更改端口可增加服务器安全,但发出访问请求的客户端也需要更改端口才可正常访问。
通过TCP/IP筛选实现服务器安全。端口的开放与关闭。在服务器只开通必要的端口,保证安全性。

Windows防火墙的作用:主动进来的通信直接拦截,可以主动出去通信。但控制不了木马程序。

传输层两个协议

传输层为相互通信的应用进程提供逻辑通信。
在这里插入图片描述
IP协议作用范围:提供主机之间逻辑通信。
TCP和UDP协议作用范围:提供进程之间逻辑通信。
协议标志:TCP 6 UDP 17
传输层端口: 端口用一个16位端口号进行标志。

端口号:065536
熟知端口:0
1023
登记端口号:数值为102449151
客户端口号:数值为49152
65536

两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
TCP 传送的数据单位协议是 TCP 报文段 (segment)。
UDP 传送的数据单位协议是 UDP 报文或用户数据报。

UDP

(不可靠传输)一个数据报一次就能完成数据通信;不分段 ,不建立会话;;例: qq文字聊天、多播发布
面向无连接的传输层协议,尽最大努力交付。
面向报文,没有拥塞,适合多媒体通信。
支持一对一、一对多、多对一、多对多通信。
首部开销小,只有8字节

UDP首部格式:单位:字节
UDP长度不包括伪首部。
在这里插入图片描述

TCP

(可靠传输) 分段 编号 流量控制 建立会话 netstat -n 例:qq传文件、网站
特点:
面向连接的传输层协议,即三次握手确定网络通信正常才可以进行的协议;
每条TCP连接只能有两个端点。只能点对点传输,每条TCP连接唯一的被通信两端的两端点(套接字)确定。
TCP连接的端口称为套接字socket=(IP地址:端口号)。TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}
全双工通信。
面向字节流传输方式。

TCP面向流的概念,分段传输方式。
在这里插入图片描述

TCP报文段首部格式
在这里插入图片描述
序号为x:代表分段发送中的数据段的第一个字节是整个文件的第x个字节。32位
确认号x:代表接收方确认时,下一次发送的数据段的第一个字节应该是整个文件的第x个字节。32位
数据偏移:通告TCP报文段第多少字节后就是 数据。其内单位1代表4字节。4位。 (表明可变长度最长可占40字节)
标志位:均为1位。
URG =1---紧急指针,不排队,优先发;
ACK =1---确认指针,确认号生效;
SYN =1---同步指针,表示请求建立会话或请求接受报文。//当ACK=0.SYN=1为发送会话请求;ACK=1,SYN=1为同意建立会话。
PSH =1---推送指针,在接收端优先直接提交此数据端。
RST =1---复位指针,连接出现严重异常,释放连接并重新建立连接。
FIN =1---终止指针,释放连接,表明报文段发送端数据已发送完毕,此时要求释放传输连接。
窗口:
检验和:
紧急指针:URG=1时,其内内容才起作用。紧急指针表明了紧急数据内容结束的位置。

抓包分析:TCP传输过程
在这里插入图片描述

TCP可靠传输实现

1.如何实现可靠传输
可靠传输的工作原理---停止等待协议:
采用了确认和重传机制,保证可靠传输。此机制也称为自动重传请求ARQ。重传请求ARQ是自动进行。
优点简单,缺点信道利用率太低;
为提高利用率,(流水线传输)发送方可连续发送多个分组,不必每发完一个分组就停止等待。发送方维持发送窗口。接收方累积确认。

具体实现方式:
以字节位单位的滑动窗口技术实现可靠传输技术。
在这里插入图片描述
在缓存中,采用滑动窗口技术,数据报确认并交付主句,则窗口向前滑动。

发送端缓存存放的是:已发送但未收到确认报的数据,待发送数据。
接收端缓存存放的是:已接收的按序到达但未被上层应用读取的数据,未按序到达的数据。

超时重传时间的选择:TCP每发送一个报文段,就对这个报文段设置计时器,计时时间后未收到确认,则重发。

加权平均往返时间RTTs,平滑往返时间。
在这里插入图片描述
TCP 报文段的首部中都增加了 SACK(选择确认 select ACK) 选项,接收方收到了和前面的字节流不连续的两个字节块时,以便报告收到的不连续的字节块的边界。此操作需双方建立连接时加上“允许 SACK”的选项。

TCP的流量控制

2.如何实现流量控制通过一个rwnd接收窗口控制每次传送的字节数,滑动窗口机制。
rwnd 接收窗口(receive window) 代表每次接收窗口的字节数。每次通信接收端会发送窗口值(大小可变)。发送会与接收匹配。为保证缓存空间足够。
为避免丢失造成通信终止,发送端也会发送测试,确定窗口大小(字节数值)。
流量控制目的:让发送方的发送速率不要太快,让接收方来得及接收,且不发生网络拥塞。
流量控制举例:
在这里插入图片描述
流量控制是在给定发送端与接收端之间点对点通信量的控制。目的为抑制发送端发送数据的速率,以便接收端来的及接受。

TCP的拥塞控制

在这里插入图片描述
网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,甚至死锁。
3.如何避免网络拥塞
出现资源拥塞的条件:对资源需求综合>可以资源
拥塞控制是一个全局性过程,涉及所有主机、路由器,以及降低网络传输性能有关的所有因素。

发送方维持拥塞窗口 cwnd (congestion window)的状态变量。动态可变,取决于拥塞程度。
控制cwnd的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

慢开始算法和拥塞避免算法的原理
拥塞窗口开始采用“慢开始”算法从1开始数量以2倍的增长;到达慢开始门限时,采用“拥塞避免”算法以窗口依次加1;当出现网络拥塞时,开始丢包,用“乘法减半”算法重设慢开始门限;再执行慢开始算法,继续传输。
“拥塞避免”并不能完全避免拥塞,指的是在拥塞避免节点把拥塞窗口控制为线性规律增长,使网络比较不容易出现拥塞。
“乘法减半”算法:慢开始门限值ssthresh 设置为当前的拥塞窗口值乘以0.5
在这里插入图片描述

快重传和快恢复
在接收端在发现因拥塞丢包,收到失序的报文段时,立刻发送3次相同的确认,让发送端重新发送。
若发送端接受到确认报,则说明,还未完全拥塞,转入“拥塞避免”。“乘法减半”算法,确定慢开始门限。但要使用快恢复算法,降低拥塞窗口,cwnd从新的慢开始门限开始,缓慢地线性增大。
在这里插入图片描述

发送窗口的实际上限值=Min [ rwnd , cwnd ];
当rwnd > cwnd ;网络拥塞限制了发送窗口最大值
当rwnd < cwnd ;接收端的接收能力限制了发送窗口最大值

TCP的运输连接管理

传输连接三个阶段:建立连接、数据传输、连接释放。
连接建立过程要解决:
1.要使每一方能够确知对方的存在。
2.要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
3.要能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。

TCP连接的建立采用 客户服务器方式
客户client:主动发起连接建立的应用进程。
服务器server:被动等待连接建立的应用进程。

三次握手建立TCP连接(高频考点)
在这里插入图片描述
三次握手
第一次A--->B:客户A主动发送 连接请求的报文段 至服务器B。SYN=1,代表请求建立会话;seq=x,同时序号=x代表数据段的第一个字节是整个文件的第x个字节。A进入SYN_SENT状态。
第二次B--->A:服务器B接收到 连接请求 后发出回应。同意则发送 同意连接请求 至A。同步位SYN=1,代表同意建立会话;ACK=1,表明确认字节段生效;seq=y,同时序号=y代表发送的数据段的第一个字节是整个文件的第y个字节;ack=x+1,代表确认收到上一数据段。A的TCP通知上层应用进程,连接已建立。B进入SYN_RECV状态。
第一次A--->B:客户A收到B回复后。发送 回复报文段 至服务器B。SYN=0,会话已建立,归0;ACK=1,表明确认字节段生效;seq=x+1,代表发出 的数据段的第一个字节是x+1,即B发送的确认号。ack=y+1,代表确认收到B数据段。B的TCP通知上层应用进程,连接已建立。
A发送后进入ESTAB-LISHED状态。B接收后进入ESTAB-LISHED状态。

TCP建立连接的各状态
在这里插入图片描述
为什么建立会话请求后 还需客户机向服务器发送确认?
考虑这样一种情况,若A向B发出连接建立请求,由于网络堵塞延迟到达B。在延迟到达期间,A由于超时便进行重发,此时,B便和A建立起了TCP连接,完成数据传送。当延迟的建立请求最终到达B时,便需要再建立一次TCP连接,由于这时候A并没有发出数据,B却一直在等待A发来数据,B的资源就这样浪费了。

TCP连接释放
在这里插入图片描述
四次挥手
第一次A--->B:传输结束后,客户机A的应用进程表示要释放连接,TCP发出 释放连接报文段 至服务器B,并主动关闭TCP连接。FIN=1,代表释放连接;序号seq=u,发送一个数据等待B的确认。A处于 等待释放1——FIN-WAIT1状态。
第二次B--->A: 服务器B收到 释放连接报文段后,向A发送 确认收到 报文段。ACK=1,代表确认号生效;seq=v,代表发送数据的序号;ack=u+1,代表确认已收到释放连接的报文段。服务器B的TCP通知上层应用进程即将关闭连接。A到B连接释放。但B依然可连接A;若B还有数据发送,A仍要接收。B处于等待关闭——CLOSE-WAIT状态,A接收到此报文段后处于 等待释放2——FIN-WAIT2状态.
第三次B--->A: 服务器B向A的数据传送完成,B则向A发送 释放连接 报文段。FIN=1,代表释放连接;ACK=1,代表确认号生效;seq=w,发送一个数据等待A的确认;ack=u+1,表明确认已收到A释放连接的报文段。B处于最后确认——LAST-ACK状态;
第四次A--->B:客户端A收到B的报文段,发送确认报文段 至B;ACK=1,代表确认号生效;seq=u+1,代表发送数据序号;ack=w+1,代表确认收到了B的释放连接报文段。TCP 连接必须经过时间2MSL 后才真正释放掉,此时A处于计时等待——TIME-WAIT状态;当B收到时,关闭连接。计时结束后A关闭连接。

TCP连接必须经过时间2MSL后才真正释放掉。MSL:Maximum Segment Lifetime报文最大生存时间
1.保证A发送的最后一个报文能到达B,因为若没到达也不重传,A关闭了,B则无法关闭。
2.防止“已失效的连接请求报文段”出现在本连接。2MSL时间可以使本连接持续的时间内产生的报文段都从网络消失。

全部评论

相关推荐

昨天 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务