https://www.bilibili.com/video/BV1Up411Z7hC?p=4&spm_id_from=pageDriver
如有错误之处请指出,谢谢!
目录
主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket
接受端利用所有的四个值将Segment导向合适的Socket
p38-p40
传输层
传输层服务的基本理论和基本机制
多路复用/分用
可靠数据传输机制
流量控制机制
拥塞控制机制
掌握Internet的传输层协议
UDP:无连接传输服务
TCP:面向连接的传输服务
TCP拥塞控制
传输层服务和协议
传输层协议
传输层协议为运行在不同Host上的进程提供了一种逻辑通信机制
端系统运行传输层协议
发送方:将应用递交的消息分成一个或多个的Segment,并向下传给网络层
接收方:将接收到的Segment组装成消息,并向上交给应用层
传输层可以为应用层提供多种协议
Internet上的TCP
Internet上的UDP
传输层于网络层直接的区别
网络层:
提供主机之间的逻辑通信机制
传输层:
提供应用进程之间的逻辑通信机制
位于网络层之上
依赖于网络层服务
对网络层服务进行(可能的)增强
Internet上的传输层协议
可靠、按序的交付服务(TCP)
拥塞控制
流量控制
连接建立
不可靠的交付服务(UDP)
基于“尽力而为(Best-effort)”的网络层,没有做(可靠性方面的)扩展
两种服务均不保证
延迟
带宽
多路复用与多路分用
Q为什么要进行多路复用和多路分用
如果某层的一个协议对应直接上层的多个协议/实体。则需要复用 、分用
还有哪些使用到了多路复用技术
linux epol 底层多路复用 NIO的核心(基于io的多路复用技术)
分用如何工作
主机接收到IP数据报(datagram)
每个数据报携带源IP地址、目的IP地址
每个数据报携带一个传输层的段(Segment)
每个段携带源端口号和目的端口号
主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket
TCP做更多的处理
Q网络层会不会处理端口号信息
A网络层不会处理端口号信息
无连接分用(UDP)
利用端口号创建Socket
DatagramSocket mySocket1=new DatagramSocket (99111);//99111端口
DatagramSocket mySocket1=new DatagramSocket (99222);//99222端口
UDP的Socket用二元组标识
(目的IP地址。目的端口号)
主机收到UDP段后
检查段中的目的端口号
将UDP段导向绑定在端口号的Socket
来自不同源IP地址和 或源端口号的IP数据
来自不同源IP地址和 或源端口号的IP数据报只要目的IP地址或目的端口号相同就会被被导向同一个Socket
例子
全部被导入6428这个应用进程
源端口号:提供了返回地址
面向连接的分用(TCP)
TCP的Socket用四元组标识
源IP地址
源端口号
目的IP地址
目的端口号
接受端利用所有的四个值将Segment导向合适的Socket
服务器可能同时支持多个TCP Socket
每个Socket用自己的四元组标识
Web服务器为每个客户端开不同的Socket
例子
socket编程同一个端口号可以复用,服务器可以监听一个端口号的所有IP,服务器可以根据源数据报的IP和端口返回消息
让一个进程创建多个线程,让各个线程维持不同的TCP连接