计算机网络知识点总结 (1)
目录
OSI七层模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
TCP/IP模型
五层体系结构
TCP三次握手在哪一层
各层的网络协议
数据在各层间的传输
浏览器地址栏输入URL到显示网页的过程
DNS的解析过程
WebSocket和Socket的区别
抓包
HTTP
常用状态码
http的请求方式
http的get可以执行写操作吗
什么是幂等 ?
Get和Post的区别
Http的请求过程
HTTP请求报文结构
HTTP响应报文
URL和URI的区别
HTTP1.0,1.1,2.0区别
OSI七层模型
物理层
主要作用是传输比特流,网卡工作在这层。
数据链路层
数据链路层定义了如何格式化数据进行传输,以及如何控制对物理介质的访问。通常提供错误检测和纠正,以确保数据传输的准确性。
网络层
网络层主要功能是将网络地址转化为对应的物理地址,并决定如何将数据从发送方路由到接收方。路由器属于网络层。本层需要关注的协议TCP/IP
协议中的IP协议。网络层负责将数据传输到目标地址。目标地址可以使多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。主要由 IP、ICMP
两个协议组成
传输层
随着网络通信需求的进一步扩大,通信过程中需要发送大量的数据,如海量文件传输,可能需要很长时间,网络在通信的过程中会中断很多次,此时为了保证传输大量文件时的准确性,需要对发送出去的数据进行切分,切割为一个一个的段落(Segement
)发送,其中一个段落丢失是否重传,段落是否按顺序到达,是传输层需要考虑的问题。
传输层解决了主机间的数据传输,数据间的传输可以是不同网络,并且传输层解决了传输质量的问题。
传输层需要关注的协议有TCP/IP协议中的TCP
协议和UDP
协议。
会话层
自动收发包,自动寻址。
会话层作用是负责建立和断开通信连接,何时建立,断开连接以及保持多久的连接。常见的协议有 ADSP、RPC
等
表示层
Linux给WIndows发包,不同系统语法不一致,如exe不能在Linux
下执行,shell不能在Windows不能直接运行。于是需要表示层。
解决不同系统之间通信语法问题,在表示层数据将按照网络能理解的方案进行格式化,格式化因所使用网络的不同而不同。
它主要负责数据格式的转换。具体来说,就是讲设备固有的数据格式转换为网络标准格式。常见的协议有ASCII、SSL/TLS
等
应用层
规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组成,消息头中必须记录消息体的长度等信息,方便接收方正确解析发送方发送的数据。
应用层旨在更方便应用从网络中接收的数据,重点关注TCP/IP
协议中的HTTP协议
四层传输层数据被称作段(Segments);
三层网络层数据被称做包(Packages);
二层数据链路层时数据被称为帧(Frames);
一层物理层时数据被称为比特流(Bits)。
TCP/IP模型
TCP/IP四层模型
①、应用层(Application Layer):直接面向用户和应用程序,提供各种网络服务。它包含了用于特定应用的协议和服务,如 HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等。
②、传输层(Transport Layer):提供端到端的通信服务,确保数据可靠传输。它负责分段数据、流量控制、错误检测和纠正。常见的传输层协议有 TCP 和 UDP。
③、网际层:或者叫网络层(Internet Layer),负责在不同网络之间路由数据包,提供逻辑地址(IP 地址)和网络寻址功能。用于处理数据包的分组、转发和路由选择,确保数据可以从源端传输到目标端。
④、网络接口层(Network Access Layer):或者叫链路层(Link Layer),负责将数字信号在物理通道(网线)中准确传输,定义了如何在单一网络链路上传输数据,如何处理数据帧的发送和接收,包括物理地址(MAC 地址)的解析。常见协议 WIFI 以太网
五层体系结构
- 应用层:作为网络服务和最终用户之间的接口。它提供了一系列供应用程序使用的协议,如 HTTP(网页)、FTP(文件传输)、SMTP(邮件传输)等。使用户的应用程序可以访问网络服务。
- 传输层:提供进程到进程的通信管理,这一层确保数据按顺序、无错误地传输。主要协议包括 TCP 和 UDP。
- 网络层:负责数据包从源到目的地的传输和路由选择,包括跨越多个网络(即互联网)。它使用逻辑地址(如 IP 地址)来唯一标识设备。路由器是网络层设备。
- 数据链路层:确保从一个节点到另一个节点的可靠、有效的数据传输。交换机、网桥是数据链路层设备。
- 物理层:电缆、光纤、无线电频谱、网络适配器等。
TCP三次握手在哪一层
三握四挥都是在传输层
各层的网络协议
数据在各层间的传输
对于发送方而言,从上层到下层层层包装,对于接收方而言,从下层到上层,层层解开包装。
浏览器地址栏输入URL到显示网页的过程
1、DNS解析,将域名解析为IP地址
2、TCP连接 经过三握创立连接
3、发送HTTP请求
4、服务器处理请求 服务器接收到 HTTP 请求后,根据请求的资源路径,经过后端处理,生成 HTTP 响应消息
5、浏览器接受HTTP响应
6、断开连接
DNS的解析过程
WebSocket和Socket的区别
- Socket 其实就是等于 IP 地址 + 端口 + 协议。
- WebSocket 是一个持久化的协议,它是伴随 H5 而出的协议,用来解决 http 不支持持久化连接的问题。
- Socket 一个是网编编程的标准接口,而 WebSocket 则是应用层通信协议。
抓包
谷歌的network 还有wireshark
HTTP
常用状态码
HTTP 状态码用于表示服务器对请求的处理结果,可以分为 5 种:
- 1xx 服务器收到请求,需要进一步操作,例如 100 Continue。
- 2xx 请求成功处理,例如 200 OK。
- 3xx 重定向:需要进一步操作以完成请求;例如 304 Not Modified 表示资源未修改,客户端可以使用缓存。
- 4xx 客户端错误:请求有问题,例如 404 Not Found 表示资源不存在。
- 5xx 服务器错误,例如500 Internal Server Error 表示服务器内部错误。
http的请求方式
- GET:请求检索指定的资源。应该只用于获取数据,并且是幂等的,即多次执行相同的 GET 请求应该返回相同的结果,并且不会改变资源的状态。
- POST:向指定资源提交数据,请求服务器进行处理(如提交表单或上传文件)。数据被包含在请求体中。可能会创建新的资源或修改现有资源。
- DELETE:删除指定的资源。
- PUT:用于替换指定的资源。如果指定的资源不存在,创建一个新资源。
- HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。可以用于检查资源是否存在,验证资源的更新时间等。
- OPTIONS:用于获取服务器支持的 HTTP 请求方法。通常用于跨域请求中的预检请求(CORS)。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。但由于安全风险(可能暴露敏感信息),很多服务器会禁用 TRACE 请求。
- CONNECT:建立一个到目标资源的隧道(通常用于 SSL/TLS 代理),用于在客户端和服务器之间进行加密的隧道传输。
http的get可以执行写操作吗
可以,但不推荐 会有安全问题 如:跨站请求伪造CSRF
什么是幂等 ?
幂等就是可以重复执行但是执行结果都是一致的
在正确实现的条件下,GET、HEAD、PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是。
Get和Post的区别
GET 请求主要用于获取数据,参数附加在 URL 中,存在长度限制,且容易被浏览器缓存,有安全风险;而 POST 请求用于提交数据,参数放在请求体中,适合提交大量或敏感的数据。
另外,GET 请求是幂等的,多次请求不会改变服务器状态;而 POST 请求不是幂等的,可能对服务器数据有影响。
Http的请求过程
1、Http是基于TCP\IP协议的
2、首先URL输入,DNS解析域名为IP地址
3、TCP建立连接,发送http请求
4、服务器收到请求,执行,执行完返回一个http响应
5、客户端接收响应,进行渲染
HTTP请求报文结构
请求行
包括请求方法、请求 URL 和 HTTP 协议的版本。例如:GET /index.html HTTP/1.1
。
请求头部
包含请求的附加信息,如客户端想要接收的内容类型、浏览器类型等。例如:
Host: www.javabetter.cn
,表示请求的主机名(域名)Accept: text/html
,表示客户端可以接收的媒体类型User-Agent: Mozilla/5.0
,表示客户端的浏览器类型- Range:用于指定请求内容的范围,如断点续传时表示请求的字节范围。
消息正文
消息正文是可选的,如 POST 请求中的表单数据;GET 请求中没有消息正文。
HTTP响应报文
①、状态行
包括 HTTP 协议的版本、状态码(如 200、404)和状态消息(如 OK、NotFound)。例如:HTTP/1.0 200 OK
。
②、响应头部
包含响应的附加信息,如服务器类型、内容类型、内容长度等。也是键值对,例如:
Content-Type: text/plain
,表示响应的内容类型Content-Length: 137582
,表示响应的内容长度Expires: Thu, 05 Dec 1997 16:00:00 GMT
,表示资源的过期时间Last-Modified: Wed, 5 August 1996 15:55:28 GMT
,表示资源的最后修改时间Server: Apache 0.84
,表示服务器类型
③、空行
表示响应头部结束。
④、消息正文(可选)
响应的具体内容,如 HTML 页面。不是所有的响应都有消息正文,如 204 No Content 状态码的响应。
URL和URI的区别
URL是URI的子集
- URI,统一资源标识符(Uniform Resource Identifier, URI),标识的是 Web 上每一种可用的资源,如 HTML 文档、图像、视频片段、程序等都是由一个 URI 进行标识的。
- URL,统一资源定位符(Uniform Resource Location),它是 URI 的一种子集,主要作用是提供资源的路径。
HTTP1.0,1.1,2.0区别
HTTP1.0 默认是短连接,HTTP 1.1 默认是长连接,HTTP 2.0 采用的多路复用。
1.0
- 无状态协议:HTTP 1.0 是无状态的,每个请求之间相互独立,服务器不保存任何请求的状态信息。
- 非持久连接:默认情况下,每个 HTTP 请求/响应对之后,连接会被关闭,属于短连接。这意味着对于同一个网站的每个资源请求,如 HTML 页面上的图片和脚本,都需要建立一个新的 TCP 连接。可以设置
Connection: keep-alive
强制开启长连接。
1.1
- 持久连接:HTTP 1.1 引入了持久连接(也称为 HTTP keep-alive),默认情况下不会立即关闭连接,可以在一个连接上发送多个请求和响应。极大减轻了 TCP 连接的开销。
- 流水线处理:HTTP 1.1 支持客户端在前一个请求的响应到达之前发送下一个请求,以提高传输效率。
2.0
- 二进制协议:HTTP 2.0 使用二进制而不是文本格式来传输数据,解析更加高效。
- 多路复用:一个 TCP 连接上可以同时进行多个 HTTP 请求/响应,解决了 HTTP 1.x 的队头阻塞问题。
- 头部压缩:HTTP 协议不带状态,所以每次请求都必须附上所有信息。HTTP 2.0 引入了头部压缩机制,可以使用 gzip 或 compress 压缩后再发送,减少了冗余头部信息的带宽消耗。
- 服务端推送:服务器可以主动向客户端推送资源,而不需要客户端明确请求。