计算机网络-应用层

浏览器界面加载整个网页的整个过程

简单描述

作一个简单粗暴的描述,假设是简单的HTTP请求,IPV4,没有代理。
1.浏览器查询缓存,如果缓存存在跳到第9步。
2.浏览器询问操作系统服务器的IP地址。
3.操作系统做DNS查询,返回IP地址给浏览器。
4.浏览器打开对服务器的TCP连接(如果是HTTPS协议的话会更复杂)。
5.浏览器通过TCP连接发送HTTP请求。
6.浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求。
7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx 5xx)等等,这些都是不同响应的正常处理(2xx).
8.如果响应可缓存,将存入缓存。
9.浏览器解码响应(例如:如果它是gzziped压缩)。
10.浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。
11.浏览器展现响应,对未知类型还会弹出下载对话框。

详细描述
1.DHCP 配置主机信息

1)假设主机最开始没有IP地址,需要通过DHCP获取。

2)主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。

3)该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。

4)该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。

5)连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段又被放入 IP 数据报中,最后放入 MAC 帧中。

6)该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。

7)主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。

2.ARP 解析 MAC 地址

1)主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。

2)主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。

3)该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。

4)该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。

5)DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。

6)主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。

7)网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。

3.DNS 解析域名

1)知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。

2)网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。

3)因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。

4)到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。

5)找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

4.HTTP 请求页面

1)有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。

2)在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。

3)HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。

4)连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。

5)HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。

6)浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。

文件传送协议FTP

FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:
1)控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。

2)数据连接:用来传送一个文件数据。

根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:

主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0~1023 是熟知端口号。
在这里插入图片描述

被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。
在这里插入图片描述

动态主机配置协议

DHCP的工作流程简单解释

一、客户机请求IP(DHCPdiscover)
二、服务器响应(DHCPoffer)
三、客户机选择IP(DHCPrequest)
四、服务器确认IP租约(DHCPack/DHCPnak)

DHCP工作流程的详细解释

DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的连网方式,用户不再需要手动配置 IP 地址等信息。

DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。

DHCP 工作过程如下:

1)客户端发送Discover报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。

2)DHCP 服务器收到 Discover 报文之后,发送Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。

3)如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送Request 报文给该 DHCP 服务器。

4)DHCP 服务器发送Ack 报文,表示客户端此时可以使用提供给它的信息。

在这里插入图片描述

远程登录协议

TELNET 用于登录到远程主机上,并且远程主机上的输出也会返回。

TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。

电子邮件协议

一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议

邮件协议包含发送协议和读取协议:
发送协议常用 SMTP
读取协议常用 POP3 和 IMAP
在这里插入图片描述

SMTP

SMTP (Simple Mail Transfer Protocol)只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。
通用互联网邮件扩充(MIME,Multipurpose Internet Mail Extensions) 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。

在这里插入图片描述

POP3

POP3 (Post Office Protocol - Version 3)的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3 可以不删除邮件。

IMAP

IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。

常用端口

应用应用层协议端口号传输层协议备注
域名解析DNS53UDP/TCP长度超过 512 字节时使用 TCP
动态主机配置协议DHCP67/68UDP
简单网络管理协议SNMP161/162UDP
文件传送协议FTP20/21TCP控制连接 21,数据连接 20
远程终端协议TELNET23TCP
超文本传送协议HTTP80TCP
简单邮件传送协议SMTP25TCP
邮件读取协议POP3110TCP
网际报文存取协议IMAP143TCP

实时流式协议RTSP

RTSP(Real-Time Streaming Protocol)是为了给流式过程增加更多功能而设计的协议。
RTSP本身并不传送数据,而仅仅是使媒体播放器能够控制多媒体流的传送(类似FTP的控制信道),因此RTSP称带外协议。
RTSP协议以客户服务器方式工作,它是一个应用层的多媒体播放控制协议,让用户像控制影碟机一样控制互联网数据,RTSP又称“互联网录像机遥控协议”。

RTSP媒体服务器的工作过程

在这里插入图片描述

实时运输协议RTP

实时运输协议(RTP,Real-Time Transport Protocol)为实时应用提供端到端的运输,但不提供任何服务质量的保证。特点如下:
1)需要发送的数据(音视频)压缩后发送给RTP封装成RTP分组
2)RTP分组装入UDP用户数据报,然后交给IP层

RTP是一个协议框架,只包含实时应用的一些共同功能。RTP自己并不对多媒体数据块做任何处理,而只是向应用层提供一些附加的信息。
其实也可以把RTP看成是在UDP之上的一个运输层子层的协议。

RTP分组只包含RTP数据,控制是由另一个配套使用的RTCP协议提供的
RTP在端口1025到65535之间选择一个未使用的偶数UDP端口,而同一次会话中的RTCP则使用下一个奇数UDP端口号。端口号5004和5005则分别用作RTP和RTCP的默认端口号。

RTP分组的首部格式如下:
在这里插入图片描述

粘包问题的产生和解决

什么是粘包?

1 连续的小包可能会被优化算法给组合到一起进行发送

2 第一次如果发送的数据大小2000B接收端一次性接受大小为1024,这就导致剩下的内容会被下一次recv接收到,导致结果错乱

粘包问题的产生

两种情况下会发生粘包:
1.发送端需要等缓冲区满才发送出去,造成粘包(TCP内部nagle算法,优化传输效率:数据量小且间隔时间小的数据会合并为一次进行发送)

2.接收方不及时接收缓冲区的包,造成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包)

粘包问题的解决

为了避免粘包现象,可采取以下几种措施:

(1)对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满;
(2)接收进程更高的频率去接收数据,使其及时接收数据,从而尽量避免出现粘包现象;
(3)由接收方控制,将一包数据按结构字段,人为控制分多次接收,然后合并,通过这种手段来避免粘包。

以上提到的三种措施,都有其不足之处。

(1)第一种编程设置方法虽然可以避免发送方引起的粘包,但它关闭了优化算法,降低了网络发送效率,影响应用程序的性能,一般不建议使用。
(2)第二种方法只能减少出现粘包的可能性,但并不能完全避免粘包,当发送频率较高时,或由于网络突发可能使某个时间段数据包到达接收方较快,接收方还是有可能来不及接收,从而导致粘包。
(3)第三种方法虽然避免了粘包,但应用程序的效率较低,对实时应用的场合不适合。

一种比较周全的对策是:接收方创建一预处理线程,对接收到的数据包进行预处理,将粘连的包分开。

参考

1.CYC2018@GitHub
2.计算机网络-谢希仁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值