传输层协议有哪些
TCP / UDP
TCP/UDP 比较&使用场景
TCP UDP 都是传输层协议,都基于IP协议。
协议 | 是否需要建立会话 | 可靠传输 | 分段传输 | 流量控制 | 例子 |
TCP | 建立会话 | 可靠传输 | 需要将要传输的文件分段传输 | 流量控制 | QQ传文件,访问WEB,访问FTP |
UDP | 不需要建立会话 | 不可靠传输 | 不分段 (一个包就能完成通信) | 不需要流量控制 | 发QQ信息(也是UDP包反馈收到,否则消息发送失败),DNS解析,多播组播(收直播) |
TCP传的是段
UDP传的是报文
小扩展:QQ视频通话,是TCP还是UDP
如果TCP,可靠性要求很高,如果丢包,会要求重传,则收视频的方面会"一秒也不错过",但会卡顿。
如果UDP,可靠性要求不高,如果丢包,不要求重传,收视频的方面,虽然丢失某几秒的内容,但是实时交流。
传输层协议 和 应用层协议 之间的关系:
传输层:TCP协议 UDP协议
应用层:http https ftp smtp等协议
传输层:通过不同的端口号,来区分不同的应用层协议
http = TCP + 80端口
https = TCP + 443端口
FTP = TCP +21
SMTP = TCP +25
应用层协议和传输层协议之间的关系
- 服务使用TCP或UDP的端口侦听客户端请求
- 客户端使用IP地址定位服务器 ; 使用目标端口,定位服务
- 可以在服务器网卡上设置只开放必要的端口,实现服务器网络安全(不让远程连接,就不开3389)(只开80端口,别的都关)
网络层 与 传输层 的不同
网络层:主机与主机的通信
传输层:进程与进程的通信
浏览器访问,会话都有啥
不同网页窗口,源端口不冲突,目标端口80
例:浏览器1 5997端口 访问 80端口,回来的也是给 5997端口
(有可能一个页面 播放2个视频,连2个不同的服务器 则2个会话)
TCP:点到点 --什么是socket
socket == IP地址+ 端口
TCP协议如何实现可靠传输?
停止等待协议:没有确认,我就等待
只要你没告诉我你收到了,我就认为你没收到。
功能实现了,但是实际上,信道利用率太低!
滑动窗口技术 保证流水线传输
得到确认,移动
累积确认
124发送到了,3丢了,这种情况下:B确认 收到了2(1已经收到了)
五层传输流程
- 应用层:给出数据
- 传输层:切割分段,加首部(包括源端口、目的端口、序列号seq、确认号ack、SYN ACK 窗口信息等),首部+ 切割的数据 == 【段】
- 网络层:得到传输层的【段】,加上ip首部(包括源ip地址、目标ip地址、协议等), ip首部 + 【段】 == 【包】
- 数据链路层:得到【包】 加 源mac地址 目标mac地址,帧头、帧尾、 FCS 得到 【帧】
- 物理层:01010101
(重要,很有成就感!!!!)
TCP首部
注:确 == 确认号、序 == 序号、源 == 源端口、目 == 目标端口
ACK == 0代表确认号无效,1代表有效
SYN == 同步标记。 SYN == 1 建立会话请求 ,XP扔过去。WEB站点同意,SYN = 1 扔回来。
真实情况下,TCP如何实现可靠传输
以字节byte为单位的滑动窗口技术
确认号7
选择性确认 s ack :可以只发丢失的
拥塞控制
路由器需要处理的数据包太多,忙不过来,丢包了
刚开始是 拥塞窗口 = 1(单位:报文段),然后2的指数增加;
一旦达到慢开始门限,增长方式变为 ++;
若出现网络拥塞:拥塞窗口 = 1;慢开始门限 /= 2;
快重传:
一般情况:如果已知3丢了,还需要收到4 5,再发送确认.
快重传:已知3丢了,应该立即连发3个确认,让你重传3 4 5。
快恢复(与快重传 配套)
刚开始是 拥塞窗口 = 1(单位:报文段),然后2的指数增加;
一旦达到慢开始门限,增长方式变为 ++;
若收到3个重复的确认(快重传算法):新慢开始门限 = current拥塞窗口 / 2;拥塞窗口 = 新慢开始门限; 开始++;
TCP连接的建立,三次握手
传输连接有三个阶段,即:建立连接、数据传送、释放连接。
采用的都是 client/server 方式
SYN 只有前两次,两次已经同步好了。
第三次 没有SYN了,只有ACK,是再次确认。
若没有第三次确认
三次握手:“为了防止已失效的连接请求报文段(第一份)突然又传送到了服务端,因而产生错误”