网络基础知识

1.1 数据包和帧

数据帧(frame)是数据链路层的协议数据单元,它由帧头,数据部分,帧尾三部分组成,帧头和帧未携

带一些信息,比如同步信息,地址信息,差错控制信息等,数据部分包含网络层传递的信息。

数据包是TCP/IP协议传输的数据单位,应用于网络层,网络层的数据包传递到数据链路层,加上数据

链路层的协议头和协议尾就形成了一个数据帧,在每个帧的前面加上帧头部,帧尾部就形成了一个完

整的帧

1.2 UDP/IP

UDP协议与tcp协议相似,都是一种用于在设备间传输数据的协议,利用UDP协议来在两个设备之间

发送数据不需两个设备之间进行持续的连接,UDP用于应用程序可以接受数据包丢失的情况

UDP协议的优点

1 快,利用UDP协议传输比TCP协议要快不少

2 用户可以决定数据包的发送速度

3 UDP不像TCP协议一样需要持续连接

UDP的缺点

1 UDP不关心是否可以收到数据

2 不需要持续连接代表着不稳定的连接,可能导致不少问题

UDP协议的数据包也和TCP存在差异

数据包的头部非常的简介,有以下这几种

1 Time to Live 标明数据包的到期时间,如果到时间了仍然无法到达目标主机,便会进行销毁

2 Source Address 记录发送数据包时的IP,便于返回信息的返回

3 Destination Address +目标地址 记录你要法网的主机的位置

4 Source Port 该信息用来告诉另一端用于发送TCP的数据包端口,端口随机选择

5 Dsetination Port 目标端口

6 Date :表明传输的数据的位置

1.3 端口

端口包括包括物理端口和逻辑端口i两种,物理端口是用于物理设备间连接的接口,比如ADSL

Modem,交换机,或者路由器。

逻辑端口是指逻辑意义上区分服务的端口,我们这里只谈论逻辑端口

在TCP 和UDP协议中端口地址大小为16bit 故端口号的范围在

0-65535之间

1.3.1 端口的作用

端口为了使同一个主机可以提供多种服务,通过端口号来区分相同计算机提供的不同服务

1.3.2 端口的分类

公认端口::1023 就和名字相同,已经形成了公认,对应的端口赶对应的事情

比如80端口用于HTTP通信 21端口用于FTP服务,25端口用于SMTP 135端口用于PRC

注册端口: 1024-49151 这些端口并没有和某些特定服务绑定,可以你自己决定

动态端口和私有端口: 49152-65535

动态端口是用于临时连接的端口号,这些端口通常由客户端和服务器在建立连接时进行分配

私有端口是在TCP/IP协议中保留的端口号,这些端口号是范围是预定给特定服务的,通常不由动态分配

按照协议分类 分为 TCP端口 UDP端口 保留端口

1.3.3端口使用事项

不要使用端口号小于1024的端口

端口号一般为4位,同一台计算机上不能出现两个同名端口号

在TCP/IP服务中大于5000的端口号是为其他服务器预留的

1.3.4 常见协议对应的端口

1 FTP : 21

2 SSH :22

3 HTTP :80

4 HTTPS: 443

5 SMB: 445

RDP: 3389

1.3.5 端口转发

端口转发是将应用程序和服务连接到互联网中的重要组成部分,如果没有端口转发,程序服务

只能在同一网络中使用

举个例子,如果有一台服务器在内网中,ip 地址为192.169.1.xxx,同时和一台路由器,公网ip

为172.25.24.10,内网为192.169.1.xxx相连,如果我们想要使用该服务器上某端口的服务,正常情况下肯定是不行的,因为我们无法直接访问内网,这时候在路由器上配置Port Forwarding规

则,将目标为172.25.24.10:80的包修改为目标为192.169.1.xxx:80的包,这样就可以正常进行

使用服务器的服务了

1.4 防火墙

防火墙是网络中负责确定哪些流量可以进,哪些流量可以出的设备

主要功能可以决定:

1 是否接受或拒绝来自特定网络的流量

2 是否接受或拒绝发往特定网络的流量

3 是否接受或拒绝来自某个端口的流量

4 是否接受或决定来自某协议的流量

防火墙可以分为网络防火墙,这种防火墙在网络硬件上运行,和施主你防火墙,在主机上运行

还可以分为有状态防火墙和无状态防火墙

1. 无状态防火墙: 无状态防火墙根据预定的规则集对网络流量进行简单过滤,不会跟踪网络连

接的状况或者上下文,只根据数据包特点进行过滤,没有记忆或者关联到别的数据包

2. 有状态防火墙: 有状态防火墙是一种能够跟踪网络连接状态的防火墙,它不仅会根据数据包

特点进行过滤,还会维护一个连接状态表,当数据包达到后对表内数据进行匹配,决定是否可

以通过

相比来说,有状态防火墙的安全性更高,可以防范,如网络欺骗、数据包碎片等骗过无状态防

火墙的方法。

防火墙作用于网络层和传输层

1.5 Virtual Private Network

就是vpn 和代理服务器类似,但又不同,主要特点如下

1 提供匿名服务,隐藏真实ip

2 对传输信息进行加密,加密后的信息不能被直接查看

3 允许连接不同位置的网络

目前存在的vpn技术

1 PPP 使用私钥和公共证书进行验证,本质上是一种在数据链路层的点对点协议,ppp不能离开

单独网络,因为它是一种点对点协议,仅用于两个设备间直接连接,没有内置的路由功能

2 PPTP 比PPP的优点在于允许数据直接离开网络,但与其他方案比,加密较弱

3 IPSec 在现有的ip框架下对数据进行加密,通过对ip数据包进行加密和身份验证来保障安全

1.6 路由器

路由器的作用是使用路由技术连接网络和传输数据

路由技术是一种在多个网络设备间进行数据传输的技术,包括在在设备间创建路径,在传输数据

时,路由器会选择最合适的路径,很多路由器都具有交换机功能,但路由器的真正作用在于选择

路径发送数据包,选择路径的依据为

哪个路径更短,,哪个路径更可靠,哪个路径的传输介质更快(比如电缆和光纤就是网络的传输

介质)

1.7 交换机

交换机是连接多个网络的中间人,将多个网络设备连接起来形成局域网,然后将交换机连接到路

由器进行出网,交换机在OSI的二层和第三层上,但是它们是互斥的,即第二层交换机不能执行

第三层功能,第三层交换机除了具有第二层交换机的功能外还具有路由器的功能,根据ip地址决

定转发策略

第二层交换机将同一局域网下的设备发送的信息根据mac地址进行转发。

第三层交换机使用VLANVLAN(虚拟局域网技术) 可以给不同的主机分配到不同的VLAN中,同

一个VLAN下可以包含多个主机,一个VLAN 会被分配一个内网ip,使用MAC地址和IP地址进行

数据传输,不同VLAN间可以设置通信规则,不同的VLAN虽然不能拥有同一个内网IP,但可以拥

有同样的公网IP,具体的看路由器分配。

1.8 DNS

DNS (Domain Name System) 我们在先前提过,可以在地址栏里直接输入对应服务器公网ip来对其进行访问,但

这么长的一串数字,对于普通用户来说肯定是不好记忆的,因此DNS诞生了,其用一个域名对应一个服务器ip,在

想要访问的顶服务时,只需要输入对应域名,然后你的请求会先发送到DNS服务器中进行解析,获取对应的ip地址

后在跳转到正确的网站上。

1.9 域名

由于另一篇博客写过一些内容,这里以补充为主

二级域名

二级域名限制为63个字符+顶级域名 并且只能使用a-z 0-9和连字符- ,不能使用连字符开头或者结尾

子域名: 子域名位于二级域名的左侧,也使用 . 进行分隔,同样子域名限制为63个字符,而且不能使用连字符开

头或者结尾,可以使用多个子域名来创建更长的域名,例如 jupiter.servers.tryhackme.com

但子域名的长度必须小于等于253

2.0 域名解析

由于这篇也在另一篇博客中谈过了,所以简单补充一下

AAAA 记录 该记录用于解析IPV6地址,区别与A记录

别名记录 (CNAME)

将该域名导向另一个域名

MX记录

将域名解析为处理电子邮件的服务器地址 一个MX记录可以解析多个邮件服务器地址,每个地址有个优先值,该数

字越小,优先级越高,会优先使用

TXT记录 :用于存储信息,信息搜集时别放过

2.1 DNS请求过程

1 当你请求域名时,你的计算机会先检查本地缓存,查看你之前是否访问过该地址,如果访问过,直接按本地储存

中的ip地址进行访问,这也是DNS污染的重要方式之一

2 如果在本地缓存没找到对应的域名,就会访问递归DNS服务器(或者叫本地DNS服务器),该服务器一般由本地的

ISP提供,如果递归DNS服务器本地缓存有先前访问的记录,则会直接返回给客户端,如果没有的话,会代替

你向根DNS服务器进行查询

3 请求到达根DNS服务器时,会根据你的域名来重定向到正确的顶级域名服务器,然后返回本地DNS服务器比

如.com域名的TLD服务器地址

4 递归DNS服务器会像TLD服务器发送一个DNS请求(明白为什么叫递归DNS服务器了吧),其中包含了需要解析

的域名,TLD服务器会返回一个负责管理该域名的权威DNS服务器的地址

5 本地DNS服务器会向权威服务器发送一个DNS请求,请求中包含了需要解析的域名

6 权威DNS服务器会返回对应的IP给本地DNS服务器

7 本地DNS服务器再将此地址返回给客户端

这样就完成了一次DNS请求的全过程,由此可见本地DNS服务器确实在进行递归,所以也叫做递归DNS服务器。

每次本地DNS服务器在权威DNS服务器完成查询后会将查询后的IP地址进行缓存,以便下次直接使用,缓存的DNS

记录会保留一个TTL信息,该信息用于存储该缓存记录的保留时间,或者叫身存周期

2.2 HTTP状态码

状态码是客户端发送http请求后服务器端返回的一种表示该请求状态的数字

按大类来分分为以下几种

100-199 :该状态码告诉客户端请求的第一部分已经被接受,可以继续发送请求

200-299 告知客户端请求成功

300-399 重定向,用于将客户端的请求重定向到另一个资源,要么是不同的网页,要么是不同的网站

400-499告知客户端,客户端发生错误,

500-599高柱服务器端发生一些错误

以下是一些常见的状态码

200 响应正常

201 成功创建资源

301 访问的资源发生了永久移动,将浏览器重定向的新网页告诉搜索引擎

302与301类似,都是告知浏览器资源发生了迁移,只不过一个是永久迁移,一个是暂时迁移

401 未授权,你没有获得查看该资源的权限

403 禁止访问

404 页面未找到

405 不允许的方式,请求方法使用不正确

500 内部服务器错误

503 服务不可用,服务器无法处理你的请求,要么过载,要么停机

2.3 报文格式

之前写的博客重点在于介绍起始行(start line)本篇着重介绍头部字段(headers)

对于start line,请求报文由请求方法,请求目标(请求文件),版本号三部分组成

响应报文由 版本号 状态码 原因(作为数字状态码的补充,是更详细的解释文字,帮助人理解原因)

常见的请求报文的头部字段

Host:网站域名

Use-Agent:这是你浏览器的类别和版本号,告诉网站后网站可以根据你的浏览器来正确格式化网站,而且

HTML,CSS JavaScript 和CSS 的某些元素只在特定浏览器解析

Content-Length: 向web服务器发送数据时,内容长度会告诉服务器发送的预期数据流量,用于确保没有数据丢失

Accept-Encoding 告诉浏览器数据的编码方式,便于服务器进行解码

Cookie:利用cookie确认用户身份,根据此来决定你能看到的内容

常见响应报文的首部字段

Set-Cookie :用于服务器向客户端发送cookie,客户端会将此cookie存放在本地

Cache-Control 告诉浏览器将响应报文存储在浏览器中的时间,当缓存没被销毁前,同样的请求将之间从缓冲中

获得响应

Content-Type 返回的内容类型

Content-Encoding: 返回内容的编码方式

2.4 负载均衡器

当网站的流量较大时,一台服务器可能无法完全处理所有的服务请求,这时候就需要使用多台服务器,而协调这些

服务器的正是负载均衡器。

当你请求一个具有负载均衡器的网站时,负载均衡器会先接受你的请求,然后根据算法判断哪个服务器最合适处理

该请求,接着将请求转发到对应的服务器上,负载均衡器还会对每台服务器执行定期检查,以确保其正常运行,如

果服务器未正确响应,负载均衡器就会停止发送流量,知道其正常响应

2.5 CDN(内容分发网络)

CDN可以用于减少过多的网络请求,网站通过将静态文件托管到全球的cdn服务器上,当用户对某一资源进行请求

时,会链接到最近的cdn服务器进行数据传输,而不是直接从网站服务器上获得资源,从而大程度的减少网络压力

2.6 web服务器

web服务器是一种软件,它侦听传入连接,然后利用http协议将web内容传送到客户端,比如apache ,nginx都是

常见的web服务器,

2.7 虚拟主机

web服务器可以托管复数个具有不同域名的网站,实现这一点利用的就是虚拟主机,web服务器通过检测请求报文

的headers获取请求发送的主机名,并将其与虚拟主机进行匹配(虚拟主机只是本地的配置文件),如果找到匹配,

就可以提供正确的服务,如果找不到匹配,就会提供默认的网站。

posted @ 2023-10-21 18:37  折翼的小鸟先生  阅读(20)  评论(0编辑  收藏  举报