2.计算机网络基础

123456
4
2025-05-20

2.计算机网络基础

2.1 OSI七层模型

各层作用介绍

应用层

应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输,收发电子邮件等。

作用:包括各种协议,他们定义了具体的面向用户的应用:如电子邮件,文件传输等

表示层

表示层处理流进节点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层流出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层课提供的转换功能之一

表示层作用:

  • 提供数据格式,变换和编码转换

  • 涉及正在传输数据的语法和语义

  • 将消息以何时电子传输的格式编码

  • 执行该层的数据压缩和加密

  • 从应用层接收消息,转换格式,并传送到会话层,该层常合并在应用层中

会话层

会话层主要是管理和协调不同主机上各种进程之间的通信,负责建立,管理,终止程序间的会话。

会话层作用:

  • 提供节点之间通信过程的协调

  • 负责执行会话规则,同步数据流以及当故障发生时重新建立连接

  • 使用上面的表示层和下面的传输层功能

传输层

为上层协议提供可靠的,透明的数据传输服务,包括处理差错控制和流量控制等问题。传输层传送的协议数据单元称为段(data segment)或报文(Message)

传输层作用:

  • 提供无差错的数据传输

  • 接收来自会话层的数据,如果需要,将数据分隔成更小的分组,向网络层传送分组并确保分组完整和正确到达它们的目的地

  • 在系统之间提供可靠的透明传输,提供端到端的错误恢复和流量控制

网络层

网络层是为其上层传输层提供服务,传输的协议数据单元称为数据包(packet)或分组,该层的主要作用是解决如何将数据包通过各节点传送的问题。还要避免通信子网中出现过多的数据包而造成的网络堵塞。当数据包要跨越多个通信子网才能到目的地时还要解决网际互联的问题

网络层作用:

  • 负责端到端的数据的路由或交换,为透明地传输数据建立连接

  • 寻址并解决与数据在异构网络间传输相关的所有问题

  • 使用上面的传输层和下面的数据链路层的功能

  • 格式化的消息称为分组

数据链路层

数据链路层是为其上层网络层提供服务,解决两个相邻节点之间的通信问题,传送的协议数据单元称为数据帧(data frame)将不可靠的物理链路转换成对⽹络层来说⽆差错的数据链路。此外,数据链路层还要协调收发双⽅的数据传输速率,即进⾏流量控制,以防⽌接收⽅因来不及处理发送⽅来的⾼速数据⽽导致缓冲器溢出及线路阻塞。

数据链路层的作⽤:

  • 在物理链路的两端之间传输数据

  • 在⽹络层实体间提供数据传输功能和控制

  • 提供数据的流量控制

  • 检测和纠正物理链路产⽣的差错

  • 格式化的消息称为帧

物理层

物理层是OSI参考模型的最底层,它利⽤传输介质为其上层数据链路层提供物理连接。它主要关⼼的是通过物理链路从⼀个节点向另⼀个节点传送⽐特流(bit)

物理层的作⽤:

  • 提供建⽴、维护和释放物理链路所需的机械、电⽓功能和规程等特性

  • 通过传输介质进⾏数据流(⽐特流)的物理传输、故障监测和物理层管理

  • 从数据链路层接收帧,将⽐特流转换成底层物理介质上的信号

总结

低三层模型属于通信子网,涉及为用户间提供透明连接,操作主要以每条链路为基础,在节点间的各条数据链路上进行通信,由网络层来控制各条链路上的通信,但要依赖于其他节点的协调操作

高三层属于资源子网,主要涉及保证信息以正确可理解形式传送

传输层是高三层和低三层的接口,他是一个端到端的层次,保证透明的端到端连接,满足用户的服务质量要求,并向高三层提供合适的信息形式

2.2 TCP/IP 五层模型

在现实中TCP/IP得到广泛应用

2.2.1 TCP/IP和OSI七层模型的区别

TCP/IP协议中的应⽤层处理开放式系统互联模型中的第五层、第六层和第七层的功能。TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,⽽开放式系统互联模型可以做到。TCP/IP协议还提供⼀项名为UDP(⽤户数据报协议)的选择。UDP不能保证可靠的数据包传输。

2.2.2 TCP和UDP的区别(重点)

连接方面区别

  • TCP面向连接(如打电话要先拨号建立连接)

  • UDP是无连接,发送数据前是不需要建立连接的

安全方面区别

  • TCP提供可靠服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达

  • UDP尽最大努力交付,即不报证可靠交付

传输效率区别

  • TCP传输效率相对较低,适用于可靠性及完整性较高的通信传输

  • UDP传输效率高,适用于对告诉传输和实时性有较高的通信或广播通信

连接数量区别

  • TCP连接只能是点对点,一对一的

  • UDP支持一对一,一对多,多对一和多对多的交互通信

2.2.3 TCP三次握⼿(重点)

三次握⼿过程

1.客户端发送SYN(SEQ=x)报⽂给服务器端,进⼊SYN_SENT状态。

2.服务器端收到SYN报⽂,回应⼀个SYN (SEQ=y),ACK(ACK=x+1)报⽂,进⼊ SYN_RCVD状态。

3.客户端收到服务器端的SYN报⽂,回应⼀个ACK(ACK=y+1)报⽂,进⼊Established状态。

四次挥⼿过程

1.数据发送完毕后,客户端发送释放连接请求(FIN=1,seq=u )并进⼊FIN-WAIT-1状态。

2.服务器收到释放连接请求,做出应答(ACK=1,seq=v,ack=u+1.),并进⼊CLOSE-WAIT状态。(此时客户端处于FIN-WAIT-2状态不发送只接收数据,此时仍在接收服务器传输的数据)

3.服务器发送完所有数据后发送释放连接请求(FIN=1,ACK=1,seq=w,ack=u+1),并进⼊LAST- ACK状态。

4.客户端收到释放连接请求后发送确认应答(ACK=1,seq=u+1,ack=w+1),并进⼊TIME-WAIT状态.该状态会持续2MSL(2倍报⽂最⼤⽣存时间)时间(服务器收到应答会⽴即进⼊CLOSED状态),若该时间段内没有收到重发请求,就进⼊CLOSED状态。

2.3 HTTP请求类型介绍

HTTP八种方法

序号

方法

描述

1

GET

从服务器获取资源。⽤于请求数据⽽不对数据进⾏更改。例如,从服务器获取⽹⻚、图⽚等。

2

POST

向服务器发送数据以创建新资源。常⽤于提交表单数据或上传⽂件。发送的数据包含在请求体中。

3

PUT

向服务器发送数据以更新现有资源。如果资源不存在,则创建新的资源。与 POST不同,PUT 通常是幂等的,即多次执⾏相同的 PUT 请求不会产⽣不同的结果。

4

DELETE

从服务器删除指定的资源。请求中包含要删除的资源标识符。

5

PATCH

对资源进⾏部分修改。与 PUT 类似,但 PATCH 只更改部分数据⽽不是替换整个资源。

6

HEAD

类似于 GET,但服务器只返回响应的头部,不返回实际数据。⽤于检查资源的元数据(例如,检查资源是否存在,查看响应的头部信息)。

7

OPTIONS

返回服务器⽀持的HTTP ⽅法。⽤于检查服务器⽀持哪些请求⽅法,通常⽤于跨域资源共享(CORS)的预检请求。

8

TRACE

回显服务器收到的请求,主要⽤于诊断。客户端可以查看请求在服务器中的处理路径。

9

CONNECT

建⽴⼀个到服务器的隧道,通常⽤于HTTPS 连接。客户端可以通过该隧道发送加密的数据。

get和post区别(重点)

URL可⻅性

  • get传参⽅式是通过地址栏URL传递,是可以直接看到get传递的参数,get把请求的数据在URL后通过?连接,通过&进⾏参数分割。

  • post传参⽅式参数URL不可⻅,post将从参数存放在HTTP的请求包内。

传输数据大小

  • get传递数据是通过URL进⾏传递,对传递的数据⻓度是受到URL⼤⼩的限制,URL最⼤⻓度是2048个字符。

  • post没有⻓度限制。

后退页面

  • get后退不会有影响

  • post后退会重新进行提交

缓存

  • get请求可以被缓存,请求的记录会留在历史记录中

  • post不可以被缓存,请求不会留在历史记录中

编码方式

  • get请求只做URL编码

  • post支持多种编码方式

字符类型

  • get只支持ASCII字符

  • post没有字符类型限制

HTTP请求响应过程

1.域名解析

2.发起TCP3次握⼿

3.建⽴TCP连接后发起HTTP请求

4.服务器端响应http请求,浏览器得到html代码

5.浏览器解析html代码,并请求html代码中的资源

6.浏览器对⻚⾯进⾏渲染呈现给⽤户

2.4 HTTP请求/响应包介绍

HTTP请求报文

请求⾏

GET / HTTP/1.1
请求⽅法 路径 协议/版本

请求头

Host: 39.105.23.116
请求头的名字冒号值
Sec-Ch-Ua: "Chromium";v="95", ";Not A Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (
KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/web
p,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

空⾏

它的作⽤是通过⼀个空⾏,告诉服务器请求头部到此为⽌。

请求数据

若⽅法字段是GET,则此项为空,没有数据;
若⽅法字段是POST,则通常来说此处放置的就是要提交的数据;
⽐如要使⽤POST⽅法提交⼀个表单,其中有user字段中数据
为“admin”,password字段为123456,那么这⾥的请求数据就是
user=admin&password=123456,使⽤&来连接各个字段。

常⻅的请求头(重点)

Accept
指定客户端能够接收的内容类型
Accept: text/plain, text/html
​
Accept-Charset
浏览器可以接受的字符编码集
Accept-Charset: iso-8859-5
​
Accept-Encoding
指定浏览器可以⽀持的web服务器返回内容压缩编码类型
Accept-Encoding: compress, gzip
​
Accept-Language
浏览器可接受的语⾔
Accept-Language: en,zh
​
Cookie
HTTP请求发送时,会把保存在该请求域名下的所有cookie值⼀起发送给web服务器
Cookie: role=admin;ssid=1
​
Content-Length
请求的内容⻓度
Content-Length: 348
​
Content-Type
请求的与实体对应的MIME信息
Content-Type: application/x-www-form-urlencoded
​
Host
指定请求的服务器的域名和端⼝号
Host: www.github.com
​
Referer
先前⽹⻚的地址,当前请求⽹⻚紧随其后,即来路
Referer: http://www.zcmhi.com/archives/71.html
​
User-Agent
User-Agent的内容包含发出请求的⽤户信息
User-Agent: Mozilla/5.0 (Linux; X11)

HTTP响应报文

响应⾏

HTTP/1.1 200 OK
协议/版本 状态码 描述

其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

响应头

响应头⽤于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等⼀会⼉它回送的数据。设置HTTP响应头往往和状态码结合起来。

Server: nginx
响应头的名称冒号空格值

响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML⻚⾯,那么返回的就是HTML代码,如果是JS就是JS代码。

常⻅的响应头(重点)

Allow
对某⽹络资源的有效的请求⾏为,不允许则返回405
Allow: GET, HEAD
​
Content-Length
响应体的⻓度
Content-Length: 348
​
Content-Type
返回内容的MIME类型
Content-Type: text/html; charset=utf-8
​
Location
⽤来重定向接收⽅到⾮请求URL的位置来完成请求或标识新的资源
Location: http://www.zcmhi.com/archives/94.html
​
Server
web服务器软件名称
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
​
Set-Cookie
设置Http Cookie
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
​
WWW-Authenticate
表明客户端请求实体应该使⽤的授权⽅案
WWW-Authenticate: Basic

2.5 HTTP响应码

1xx(临时响应)

表示临时响应并需要请求者继续执⾏操作的状态代码。

状态码

状态码英文名称

中文描述

100

continue

继续。客户端继续其请求

101

Switching Protocols

切换协议。服务器根据客户端请求切换协议

2xx(成功)

状态码

状态码英文名称

中文描述

200

OK

请求成功,一般用于GET与POST请求

201

Created

已创建。成功请求并创建了新的资源

202****

Accepted

已经接受请求,但未处理完成

203

Non-Authoritative Information

非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204

No Content

无内容。服务器处理成功,但未返回内容。在未更新网页情况下,可确保浏览器继续显示当前文档

205

Reset Content

重置内容。服务器处理成功,用户终端应重置文档视图。可通过此返回码清除浏览器的表单域

206

Partial Content

部分内容。服务器成功处理了部分get请求

3xx(重定向)

表示要完成请求,需要进⼀步操作。通常,这些状态代码⽤来重定向。

状态码

状态码英文

中文描述

300

Multiple choices

多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端选择

301

Moved Permanently

永久移动。请求的资源已被永久移动到新的URl,返回信息会包括新的URL

302

Found

临时移动。与301类似。但资源只是临时被移动,客户端应继续使用原有URL

303

See Other

查看其他地址。与301类似使用get和post请求查看304 not modified

304

Not Modified

未修改。所请求的资源为球盖,不会返回任何资源

305

Use Proxy

使用代理。所请求的资源必须通过代理访问

306

Unused

已经被废弃的HTTP状态码

307

Temporary Redirect

临时重定向,与302类似。使用get请求重定向

4xx(请求错误)

状态码

状态码英文

中文描述

400

Bad Request

客户端的语法错误,服务器无法理解

401

Unauthorized

请求要求用户身份认证

402

Payment Required

保留,将来使用

403

Forbidden

服务器拒绝请求

404

Not Found

未找到资源

405

Method Not Allowed

客户端请求方法被禁止

406

Not Acceptable

服务器无法根据客户端请求内容特诊完成请求

407

Proxy Authentication Required

请求要求代理的身份认证,与401相似,但请求者应当使用代理进行授权

408

Request Time-out

服务器等待请求时间过长

409

Conflict

服务器完成客户端的PUT请求时可能返回的代码,服务器处理请求冲突

410

Cone

客户端请求资源已经不存在

411

Length Required

服务器无法处理客户端发送到不带Content-Length的请求信息

412

Precondition Failed

客户端请求信息的先决条件错误

413

Request entity too Large

由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端连续请求,服务器可能会关闭连接。

414

Request-URL Too Large

请求的URL过长,服务器无法处理

415

Unsupported Media Type

服务器无法处理请求附带的媒体格式

416

Requested range not satisfiable

客户端请求的范围无效

417

Expectation Failed

服务器无法满足Expect的请求头信息

5xx(服务器错误)

状态码

状态码英文名称

中文描述

500

Internal Service Error

服务器内部错误,无法完成请求

501

Not Implemented

服务器不支持请求的功能,无法完成请求

502

Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503

Service Unavailable

由于超载或系统维护,服务器暂时无法处理请求

504

Gateway Time-out

充当网关或代理的服务器,未及时从远端服务器获取请求

505

HTTP Version not supported

服务器不支持请求的HTTP协议的版本,无法完成处理

2.6 HTTPS

HTTPS(HyperTextTransferProtocoloverSecureSocketLayer)可以理解为HTTP+SSL/TLS,HTTP下加⼊SSL层,HTTPS的安全基础是SSL。

交互

证书验证阶段

浏览器发起 HTTPS 请求

服务端返回 HTTPS 证书

其中证书包含

颁发机构信息

公钥

公司信息

域名

有效期

指纹

客户端验证证书是否合法,如果不合法则提示告警

数据传输阶段

当证书验证合法后,在本地⽣成随机数;

通过公钥加密随机数,并把加密后的随机数传输到服务端;

服务端通过私钥对随机数进⾏解密;

服务端通过客户端传⼊的随机数构造对称加密算法,对返回结果内容进⾏加密后传输;

HTTPS和HTTP的区别

1、https协议需要到ca申请证书,⼀般免费证书较少,因⽽需要⼀定费⽤。

2、http是超⽂本传输协议,信息是明⽂传输,https则是具有安全性的ssl加密传输协议。

3、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。

4、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、

身份认证的⽹络协议,⽐http协议安全。

2.7 常见端口介绍

21端口:FTP文件传输服务

22端口:SSH协议,SCP文件传输,端口号重定向

23/tcp端口:telnet 远程终端仿真服务

25端口:SMTP简单邮件传输服务

53端口:DNS域名解析服务

69/udp端口:TFTP

80/8080/3128/8081/9098端口:HTTP协议代理服务器

110/tcp端口:POP3(e-mail)

119端口:119端口是为“Network News Transfer Protocol”(网络新闻组传输协议,简称NNTP)开放的。

123端口:NTP(网络时间同步协议)

135、137、138、139端⼝: 局域⽹相关默认端⼝,应关闭

161端⼝:SNMP(简单⽹络管理协议)

389端口:LDAP(轻量级⽬录访问协议)、ILS(定位服务)

443/tcp 443/udp:HTTPS服务器

465端口:SMTP(简单邮件传输协议)

873端口:rsync(文件同步传输工具)

1080端口:SOCKS代理协议服务器常⽤端⼝号、QQ

1158端口:ORACLE EMCTL(主要用于管理和监控 Oracle数据库 和 中间件 的运行状态)

1521端口:Oracle数据库

1433/tcp/udp端口:MS SQLSERVER数据库server(服务器)、MS SQLSERVER数据库monitor(监视器)

2100端⼝:Oracle XDB FTP服务

3389端⼝:WIN2003远程登录

3306端⼝:MYSQL数据库端⼝

5432端⼝:postgresql数据库端⼝

5601端⼝:kibana 它主要用于对 Elasticsearch 中存储的数据进行交互式探索、分析和可视化展示。

6379端⼝:Redis数据库端⼝

8080端⼝:TCP服务端默认端⼝、JBOSS、TOMCAT、Oracle XDB(XML 数据库)

8081端⼝:ymantec AV/Filter for MSE

8888端⼝:Nginx服务器的端⼝

9000端⼝:php-fpm

9080端⼝:Webshpere 部署web应⽤ 的程序

9090端⼝:webshpere 管理⼯具

9200端⼝:Elasticsearch服务器端⼝(一款开源搜索引擎)

10050端⼝:zabbix_server 监控解决方案 服务端

10051端⼝:zabbix_agent 监控解决方案 客户端

11211端⼝:memcache(⾼速缓存系统)

27017端⼝:mongoDB数据库默认端⼝

22122端⼝:fastdfs服务器默认端⼝ 分布式文件系统

动物装饰