运输层
运输层概述
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等)它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道;
根据需求不同,运输层提供两种运输协议
面向连接的TCP
无连接的UDP
运输层复用分用,端口
端口
-
运行在计算机上的进程使用进程标识符pid来标志
-
不同的操作系统又使用了不同格式的进程标识符
-
为了使不同的操作系统进程之间进行网络通信,就必须使用统一的方法对TCP、IP体系的应用进程进行标识;
-
TCP、IP体系的运输层使用端口号来区分应用层的不同应用进程;
端口号使用16比特表示,取值0~65535
端口号只具有本地意义,端口号只是为了标识本地计算机应用层中的各进程,再因特网中,不同的计算机中相同端口是没有联系的;
复用分用
发送方
运输层的UDP对应用报文进行封装称为UDP复用;
运输层的TCP对应用层报文进行封装称为TCP复用;
IP协议对TCP报文段和UDP用户数据报的封装称为IP复用;
IP数据报首部中的协议字段的值表示封装的类型;
- 取值为6表示封装的TCP数据报;
- 取值为17代表封装的UDP数据报;
接收方
接收方的网络层收到IP数据报后进行Ip分用;
IP数据报首部协议字段值为17,将载荷的数据报上交运输层的UDP;
IP数据报首部协议字段值为6,将载荷的数据报上交运输层的TCP;
运输层对TCP数据报进行TCP分用;
运输层对UDP数据报进行UDP分用;
根据端口将报文交付给对应的应用进程;
案例
解析过程
1、用户在浏览器输入访问域名;
2、用户pc端的DNS客户端进程会发送查询dns查询请求报文;
(www.porttest.com对应的ip地址是什么)
3、dns的查询请求报文需要使用运输层的UDP协议封装成UDP数据报,这个过程UDP首部挑选一个未被占用的源端口如49152,表示客户端进程;
目的端口的值设置为53;将UDP数据报封装成IP数据报,通过以太网发送给DNS服务器;
4、DNS服务器解封出UDP数据报,根据首部信息的53端口,请求DNS服务器端进程解析请求报文的内容;查找出对应的地址;之后会给用户PC发送DNS响应报文,如www.porttest.com对应的ip地址是xx.xx.xx.xx,DNS服务器将端口,解析信息封装成UDP数据报,再通过IP封装发送给用户;
5、用户解封UDP数据报,请求DNS客户端进程解析数据报的载荷信息,就知道了访问的地址;
6、用户请求的数据报基于TCP封装,包括请求信息和80端口,再次经过IP封装的数据报发给web服务器端;
7、web服务器端解析数据报,向Http服务端请求该地址的Http响应内容,将数据封装成tcp数据报后经过Ip封装,发给用户;
8、用户解封数据报的http响应内容,在支持http格式的浏览器显示结果;
端请求该地址的Http响应内容,将数据封装成tcp数据报后经过Ip封装,发给用户;
8、用户解封数据报的http响应内容,在支持http格式的浏览器显示结果;