阅读 22

【web网络篇】—web协议

图

写在前面

今天想了解的是有关IP,TCP/UDP,HTTP,了解它们分别是什么,又存在怎样的联系。

先上文章导图: 在这里插入图片描述

IP位于网络层,TCP/UDP位于传输层,HTTP位于应用层,我想这应该大家知道,但在网络中,当进行文件传输的时候,必然是需要各层的协议进行相互合作,才能实现文件传输这个功能。

我们知道,文件在传输的过程中,通常是通过很多个数据包进行传输,在传输过程中也会出现数据包丢失的可能,那么如何才能保证,文件可以完整的到达浏览器呢?

在这里插入图片描述

上图中可以看出,文件被拆分成数据包后,会通过IP送达到对应的主机上,然后主机需要将数据包通过TCP/UDP以数据段的方式送达到对应的应用程序上。

在互联网中,实际上是一套理念和协议组成的体系架构,各协议配合完成通信

回到文章开头的说的那三个协议,它们是如何配合完成数据包的传输呢?

IP:将数据包送达到主机

IP协议位于网络层:将数据传输到目标地址。

当主机A向主机B发送数据包时,主机A的数据包会附加上主机B的IP地址信息,以便可以正确的寻址找到主机B。同时也会附加上自己的IP地址信息,这样,主机B收到主机A的数据包后,可以回复信息给主机A。这些附加消息会被放入IP头中

IP头包含: IP版本,源IP,目标IP,生存时间等信息。

  • 传输过程

一个数据包从主机A到主机B的过程,

1、首先,主机A的网络上层将含有“婧大”的数据包交给网络层

2、网络层将IP头附加到数据包上组成新的IP数据包,并交给底层

3、底层通过物理网络将数据包传输到主机B

4、数据包到达主机B的网络层,在这里拆开数据包的IP头部,并将拆开完的数据部分传送给主机B的上层。

5、最终,含有“婧大”信息的数据包就到达了主机B的上层。

在这里插入图片描述

TCP/UDP:

TCP/UDP位于传输层: 传输层负责数据可以从发送端传输到接收端,对网络层提供可靠的目的地站点信息主要功能。

  • 端口号:标识了一个主机上进行通信的不同的应用程序

在这里插入图片描述 在TCP/IP协议中,用 “源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组 来标识一个通信

UDP:将数据包送达对应的应用程序

UDP:用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ)

  • 传输过程

1、主机A的上层将含有“婧大”的数据包传送给传输层,

2、传输层UDP头附加到数据包上,并且注册新的数据报文,传送给网络层

3、网络层将IP头附加到数据包上组成新的IP数据包,并交给底层

4、底层通过物理网络将数据包传输到主机B

5、数据包到达主机B的网络层,在这里拆开数据包的IP头部,并将拆开完的数据部分传送给主机B的传输层。

6、主机B的传输层解开UDP的头,识别出端口,交给上层应用

7、最终,含有“婧大”信息的数据包就到达了主机B的上层 在这里插入图片描述

TCP:将数据包完整地送达对应的应用程序

TCP:传输控制协议,传输效率低,可靠性强

  • 传输过程

和UDP的传输过程是差不多的,只不过TCP头的信息保证了一大部分数据传输的完整性。 在这里插入图片描述

一个完整的TCP连接的生命周期包括:建立连接,传输数据,和断开连接。

  • 三次握手,四次挥手

在这里插入图片描述

TCP与UDP对比

TCP与UDP区别总结:

1、

  • TCP面向连接 (如打电话要先拨号建立连接);
  • UDP是无连接 的,即发送数据之前不需要建立连接

2、

  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;
  • UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

详见请敲这里

3、

UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4、

  • 每一条TCP连接只能是点到点的;
  • UDP支持一对一,一对多,多对一和多对多的交互通信

5、

  • TCP对系统资源要求较多
  • UDP对系统资源要求较少。

HTTP:浏览器和服务器进行请求响应

HTTP这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页

分析请求报文和响应报文: 在这里插入图片描述

浏览器端发送HTTP请求

  • 起始行:

HTTP请求是由客户端发出的消息,用来使服务器执行动作。起始行 (start-line) 包含三个元素: 1、一个 HTTP 方法,一个动词 (像 GET, PUT 或者 POST) 或者一个名词 (像 HEAD 或者 OPTIONS), 描述要执行的动作. 2、请求目标 (request target),通常是一个 URL,或者是协议、端口和域名的绝对路径 3、HTTP 版本 (HTTP version)

  • Headers

HTTP 消息头允许客户端和服务器通过 request和 response传递附加信息。更多

  • Body

请求的最后一部分是它的 body。不是所有的请求都有一个 body:例如获取资源的请求,GET,HEAD,DELETE 和 OPTIONS,通常它们不需要 body。 有些请求将数据发送到服务器以便更新数据:常见的的情况是 POST 请求(包含 HTML 表单数据)。

服务端响应HTTP请求

  • 状态行

HTTP 响应的起始行被称作 状态行 (status line),包含以下信息:

协议版本,通常为 HTTP/1.1。 状态码 (status code),表明请求是成功或失败。常见的状态码是 200,404,或 302。 状态文本 (status text)。一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该 HTTP 消息。 一个典型的状态行看起来像这样:HTTP/1.1 404 Not Found。

  • Headers

HTTP 消息头允许客户端和服务器通过 request和 response传递附加信息。更多

  • Body

响应的最后一部分是 body。不是所有的响应都有 body:具有状态码 (如 201 或 204) 的响应,通常不会有 body。

参考:

[1] 网络原理——传输层协议UDP,TCP

[2] 浏览器实践与原理

[3] MDN文档

欢迎参观我的博客:婧婧的博客