网络协议知识总结

本文深入探讨了网络协议的概念,包括OSI/RM模型和TCP/IP协议族。介绍了TCP/IP的四层模型及其与OSI七层模型的关系。详细讲解了TCP协议的三次握手和四次挥手过程,以及HTTP协议的特点、请求和响应结构。还讨论了HTTP协议中的URI、URL和URN,以及GET和POST请求的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络协议知识总结


协议


协议就是计算机之间通过网络实现通信时事先达成的一种“约定”;这种“约定”使那些由不同厂商的设备,不同 CPU 及不同操作系统组成的计算机之间,只要遵循相同的协议就可以实现通信。


OSI/RM 模型


在这里插入图片描述


TCP/IP


除了标准的 OSI 七层模型以外,常见的网络层次划分还有 TCP/IP 四层协议以及 TCP/IP
五层协议;它们之间的对应关系如下图所示:
在这里插入图片描述

有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网络协议群。

在这里插入图片描述

应用协议

应用协议是定义了运行在不同系统上的应用程序进程如何相互传递报文的协议。

传输协议

传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使
应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信通道。

网际协议

网际协议是一个网络层协议,它包含寻址信息和控制信息 ,可使数据包在网络中路由。

路由控制协议

路由控制协议是一种网络层协议,它通过提供一种共享路由选择信息的机制,允许路由
器与其他路由器通信以更新和维护自己的路由表,并确定最佳的路由选择路径。通过路由选
择协议,路由器可以了解未直接连接的网络的状态,当网络发生变化时,路由表中的信息可
以随时更新,以保证网络上的路由选择路径处于可用状态。


TCP 协议传输特点


TCP 是一个可靠的传输协议,在创建连接时会经历三次握手,在断开连接时会经历四次
挥手。

建立连接的三次握手

所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。
在这里插入图片描述

断开连接的四次挥手

四次挥手即终止 TCP 连接,就是指断开一个 TCP 连接时,需要客户端和服务端总共发送4 个包以确认连接的断开。
在这里插入图片描述


HTTP 协议


HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写, HTTP 是万维网
(WWW:World Wide Web)的数据通信的基础。
HTTP 是一个简单的请求-响应协议,它通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
在这里插入图片描述

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
在这里插入图片描述

超文本

超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本
更是一种用户界面范式,用以显示文本及与文本之间相关的内容。
在这里插入图片描述


HTTP 协议特点


支持客户/服务器模式

HTTP 协议支持客户端服务端模式,需要使用浏览器作为客户端来访问服务端。

简单快速

客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST等。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

灵活

HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type(Content-Type 是HTTP 包中用来表示内容类型的标识)加以标记。

无连接

每次请求一次,释放一次连接。所以无连接表示每次连接只能处理一个请求。优点就是节省传输时间,实现简单。我们有时称这种无连接为短连接。对应的就有了长链接,长连接专门解决效率问题。当建立好了一个连接之后,可以多次请求。但是缺点就是容易造成占用资源不释放的问题。当 HTTP 协议头部中字段 Connection:keep-alive 表示支持长链接。

单向性

服务端永远是被动的等待客户端的请求。

无状态

HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决 HTTP 协议无状态,于是,
两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。


HTTP 协议中 URI、URL、URN


URI

URI:(Uniform Resource Identifier),统一资源标识符,是一个用于标识某一互联网资
源名称的字符串。URL 和 URN 都是 URI 的子集。

发送邮件
URI 是个纯粹的句法结构,用于指定标识 Web 资源的字符串的各个不同部分。他不属
于定位符,因为根据该标识符无法定位任何资源。

URL

URL(Uniform Resource Location 统一资源定位符),可以帮助我们唯一定位互联网上的某一个资源,相当于是互联网资源的身份证号。URL 的五个元素包括在一个简单的地址中:
1.传送协议。
2.服务器。(通常为域名或者 IP 地址)
3.端口号。(以数字方式表示,若为 HTTP 的默认值“:80”可省略)
4.请求资源路径。
5.传递数据。(在 URL 中传递数据是以 key=value 的结构进行数据绑定,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以 UTF8 的 URL 编码,避开字符冲突的问题)

http://www.itbaizhan.cn:80/course/id/18.html?a=3&b=4
http, 是协议;
www.itbaizhan.cn,是服务器域名;
80,是服务器上的默认网络端口号,默认不显示;
/course/id/18.html,是路径(URI:直接定位到对应的资源);
?a=3&b=4,请求时传递的数据;

URN

URN(Uniform Resource Name,统一资源名称),其目的是通过提供一种途径,用于在
特定的命名空间资源的标识,以补充网址。

www.itbaizhan.cn:80/course/id/18.html?a=3&b=4
URN 是 URI 的子集,包括名字(给定的命名空间内),相当于URL去掉协议后的部分就是URN;


HTTP 协议中的请求信息


打开一个网页需要浏览器发送很多次 Request(请求)
1.在浏览器输入 URL http://www.itbaizhan.cn 的时候,浏览器发送一个 Request 去获取 http://www.itbaizhan.cn 的 html. 服务器把 Response 发送回给浏览器。
(如果没有给定请求资源的路径以及名称,默认的是请求站点首页的资源;)
2.浏览器分析 Response 中的 HTML,发现其中引用了很多其他文件,比如图片,CSS 文件,JS 文件。
3.浏览器会自动再次发送 Request 去获取图片,CSS 文件,或者 JS 文件。
4.等所有的文件都下载成功后。 网页就被显示出来了。
请求状态分析(request)
Request 消息分为 3 部分,第一部分叫 Request line(请求行), 第二部分叫 Request header(请求头), 第三部分是 Request body(请求体)。Request header 和 Request body 之间有个空行。
客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:
在这里插入图片描述
在这里插入图片描述

请求行
在这里插入图片描述

请求头
请求头用于说明是谁或什么在发送请求、请求源于何处,或者客户端的喜好及能力。服
务器可以根据请求头部给出的客户端信息,试着为客户端提供更好的响应。请求头中信 息的格式为 key:value。
请求体
客户端传递给服务器的数据。比如:表单使用 post 方式提交的数据、上传的文件数据等。在这里插入图片描述

请求方式

 GET
向指定的资源发出“显示”请求。GET 请求中会将请求中传递的数据包含在 URL 中并在
浏览器的地址栏中显示。GET 请求传递数据时要求数据必须是 ASCII 字符。GET 请求 可以被浏览器缓存。

 POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包
含在请求体中。POST 请求传递数据时,数据可以是ASCII 字符也可以是字节型数据, 默认为字符型。POST 请求默认情况下不会被浏览器所缓存。

GET 和 POST 的区别(重要,面试常问)
1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
2.GET 产生的 URL 地址可以被 Bookmark(添加到书签),而 POST 不可以。
3.GET 请求会被浏览器主动 cache(缓存),而 POST 不会,除非手动设置。
4.GET 请求只能进行 url 编码,而 POST 支持多种编码方式。
5.GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。
6.GET 请求在 URL 中传送的参数是有长度限制的,而 POST 则没有。对参数的数据类型 GET只接受字符类型,而 POST 即可是字符也可是字节。
7.GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。
8.GET 参数通过 URL 传递,POST 放在 Request body (请求体)中。


HTTP 协议中的响应信息


响应状态分析(response)

Response 消息也由三部分组成:第一部分叫 Response line(响应行)、第二部分叫 Response header(响应头)、第三部分叫 Response body(响应体)。
服务端为浏览器返回消息格式如下:
在这里插入图片描述

响应行
在这里插入图片描述

1.响应行中的状态码
和请求消息相比,响应消息多了一个“响应状态码”,它以“清晰明确”的语言告诉客 户端本次请求的处理结果。

2.http 状态码分类
在这里插入图片描述

3.常见状态码及含义
200 - 请求成功,已经正常处理完毕
301 - 请求永久重定向,转移到其它 URL
302 - 请求临时重定向
304 - 请求被重定向到客户端本地缓存
400 - 客户端请求存在语法错误
401 - 客户端请求没有经过授权
403 - 客户端的请求被服务器拒绝,一般为客户端没有访问权限
404 - 资源未找到,客户端请求的 URL 在服务端不存在
500 - 服务端出现异常

响应头
响应头用于告知浏览器当前响应中的详细信息,浏览器通过获取响应头中的信息可以知
道应该如何处理响应结果。响应头中信息的格式为 key:value。
(请求头是为了浏览器在请求服务端时能够传递更多的请求信息,响应头在服务端给客 户端浏览器产生响应时能够传递更多的响应信息!)
Content-Type
表示响应的文档属于什么 MIME 类型。

MIME 类型
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩
展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒 体文件打开方式。

MIME 类型的作用
HTTP 协议所产生的响应中正文部分可以是任意格式的数据,那么如何保证接收方能看
得懂发送方发送的正文数据呢?HTTP 协议采用 MIME 协议来规范正文的数据格式。

MIME 类型的使用
在服务端我们可以设置响应头中 Content-Type 的值来指定响应类型。

响应体
就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是 HTML 页面,那么 返回的就是 HTML 代码,如果是 JS 就是 JS 代码,如此之类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值