一、网络

1.1 网络的历史

​ 最初是由于美国国防部认为,如果仅有一个集中的指挥中心很危险,所以需要设计一个分散的指挥系统,以确保部分指挥点被摧毁,其他指挥点仍能正常工作。

​ 1969年,美国国防部高级研究计划管理局(ARPA)开始建立一个名为ARPAnet的网络。当初,ARPAnet只连接了四台主机,并置于美国国防部高度机密的保护之下,所以还不具备向外推广的条件。

​ 1986年,美国国家科学基金会(NSF)利用ARPAnet发展出来的TCP/IP通讯协议,在5个超级电脑的基础上建立了NSFnet广域网

由于NSF的鼓励和自助,很多大学和机构将自己的局域网并入了NSFnet。ARPAnet也逐步被NSFnet替代。到1990年,ARPAnet–网络之父,退出历史舞台。如今,NSFnet已经成为Internet的重要骨干网之一。

​ 1989年,欧洲核子研究组织(CERN)开发成功WWW,为Internet实现广域超媒体截取/检索奠定了基础。

1.2 网络协议

1.2.1 什么是网络协议?

网络协议为计算机网络中进行数据交换而建立的规则、约定或约定的集合。

例如,两个不同终端之间要进行通讯,但是由于不同终端使用的字符集不同而无法通讯,这时就需要将各自的字符集转换为标准的字符集,再进行通讯,到达目的终端后,再转换为各自的字符集。

1.2.2 TCP/IP协议族

OSI参考模型为网络框架提供参考,目前常用的协议有TCP/IP协议等

OSI七层参考模型 TCP/IP四层应用模型
7-应用层 用户的应用程序和网络之间的接口
6-表达层 协商数据交换格式
5-会话层 允许用户使用简单易记的名称建立连接 5-7 应用层 HTTP,DNS,FTP,SMTP,TELNET
4-传输层 传输数据包的处理 4-传输层 TCP,UDP
3-网络层 IP地址 3-网络层 IP,ICMP,ARP,RARP
2-数据链路层 处理传输的字节 1-2 网络接口层 各种物理通信网络接口
1-物理层 硬件

image-20220122115356389

这个图片也很好的解释了TCP/IP协议传输的过程,每一层都会进行相应的处理并加上对应的协议

1.2.3 IP协议/IP地址(网络层)

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议

(1)IP地址

IPv4地址使用32位,以点分十进制表示,如:192.168.0.1

127.0.0.1 :本机

192.168.*.* :局域网(私人)

10.*.*.* :局域网(大型企业)

其他 :外部广域网

IPv6地址使用128位,16个字节,用8个无符号整数(八个2字节)组成

例如: 3f3f:1f34:13dc:ab43:1272:12ff:78ff:ff91

各个数之间用冒号隔开

(2)IP路由

​ 互联网是由许多个网络连接所形成的大型网络。如果要在互联网中传送IP信息包,除了确保网络上每个设备都有一个唯一的IP地址之外,网络之间还必须有传送的机制,才能将IP信息包通过一个个的网络传送到目的地。此种传送机制称为IP路由。

​ 传输信息时,必须依靠沿途各路由器的通力合作,才能将IP信息包送到目的地。在IP路由的过程中,由路由器负责选择路径IP信息包则是被传送的对象

​ 这里就能体现IP信息包传送的特性:非连接式的传送方式。即源设备只需要将信息报发出,其他步骤(是否收到、收到是否正确等)则由上层的协议(如TCP)来检查。

image-20220122133835551

(3)IP信息包传送

​ IP是网络之间信息传送的协议,可将IP信息包传送到目的设备,依赖IP地址和IP路由两种机制来实现。

1.2.4 TCP 和 UDP(传输层)

(1)TCP(传输控制协议)

一种面向连接的、可靠的、基于字节流的传输层通信协议

三次握手(建立连接)

下图便是三次握手的过程,通过这三次握手,便成功建立连接,可以开始传输数据

image-20220122134724597

(2)UDP(用户数据报协议)

一种非连接不可靠的连接方式,虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。

优点在于效率高、速度快,适合音频和视频的传输

(3)其他

百度搜了一下,微信使用的是TCP协议,而QQ主要是UDP,辅以TCP协议

1.2.5 DNS 、DHCP 和 FTP(应用层)

(1)DNS(域名解析系统)

使用UDP 端口53

域名和IP地址之间是一一对应的,所以有一个域名服务器

域名是为了方便人们记忆的,但信息之间的传送需要IP地址,所以当我们访问一个域名(如baidu.com)的时候,浏览器会先去访问DNS,找到对应的IP地址,这就叫做域名解析

所以,有的时候访问域名不成功,而直接访问IP地址就可以,这就有可能是因为DNS服务器故障了或者是域名没有绑定IP地址导致的

(2)DHCP(动态主机配置协议)

UDP (DHCP服务器的67号端口,主机的68号端口)

​ DHCP是一个局域网的网络协议,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

​ 比如使用无线设备的时候,基本上都是使用DHCP来获得IP地址的

(3)FTP(文件传输协议)

默认端口为21

用于网络上的控制文件的双向传输,同时它也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,但都遵循TCP协议

二、HTTP

2.1 什么是HTTP

超文本传输协议(Hyper Text Transfer Protocol),是一个简单的请求-响应(Request-Response)协议,它通常运行在TCP之上。

默认端口为80(在未指定端口的情况下,访问的就是80端口)

  • 客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接,大大提高了服务器的执行效率
  • HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。
  • 使用可扩展的语义和自描述消息格式

例如:当我们访问博客的时候http://Siii0.top

HTTP协议就会发送一个请求头(Request):

报文格式:请求行 - 请求头 - 报文主体

image-20220123105526604

这个请求头中我们可以根据需要添加和修改相应的Header(比如: Cookie: 123)

同样的,也会接收到一个响应头(Response):

报文格式: 请求行 - 响应头 - 报文主体

image-20220123105712511

主体和头之间要有空行来区分两者

2.2 请求头类型(HTTP Headers)

一般常用的有:

  • Host : 指定请求的服务器的域名和端口号 Host:siii0.top
  • User-Agent :内容包含发出请求的用户信息(比如使用的浏览器、操作系统等)
  • Referer :先前网页的地址,即来路
  • Content-Type :请求的与实体对应的MIME信息
  • Cache-Control :指定请求和响应遵循的缓存机制(比如指定缓存的时间)

具体可以参考 CTF-WEB——HTTP Headers类型

2.3 状态消息(状态码)

由3位数字组成,表示请求是否被理解或被满足。

  • 1XX :信息

例如:100 Continue :服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。

  • 2XX :成功

例如:200 OK :请求成功(其后是对GET和POST请求的应答文档。)

  • 3XX :重定向

例如:302 Found :所请求的页面已经临时转移至新的url。

  • 4XX :客户端错误

例如:404 Not Found :服务器无法找到被请求的页面。

  • 5XX :服务器错误

例如:504 Gateway Timeout :网关超时。

三、HTTPS

3.1 什么是HTTPS

默认端口为443

超文本传输安全协议(Hyper Text Transfer Protocol over SecureSocket Layer)

HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

3.2 什么是SSL

SSL(Secure Sockets Layer 安全套接字协议),及其继承者TLS(传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。SSL/TLS 在传输层和应用层之间对网络连接进行加密。

四、Web服务器

4.1 什么是Web服务器

Web服务器,一般指网站服务器,是一个服务器端软件主要功能是提供网上信息浏览服务(处理并向浏览器发送HTML以供浏览)

所以Web服务器响应并处理的是静态HTML

要处理动态HTML就需要用到应用程序服务器,它们通常会一起使用

目前最主流的三个Web服务器是Apache、 Nginx 、IIS。

我的理解:当我们在个人电脑上查找文件时,都有一个路径可以访问,其实就是在目录系统中查找文件。而我们开发的单纯的网页并不能直接被别人找到,所以这里就用到了Web服务器,起到一个类似于目录系统的功能,可以存放我的网页,也能让别人找到,也可以处理客户端的请求并返回相应响应。

4.2 主流的Web服务器

1、Apache

可以运行在Linux、Windows、Mac上

它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

2、IIS

是微软的软件,只能运行在Windows上

3、Nginx

可以运行在Linux/unix、Windows上

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器

反向代理服务器:

当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

位于用户与目标服务器之间,用户直接访问反向代理服务器就可以获得目标服务器的资源,用户不需要知道目标服务器的地址,提高了访问效率,也增强了Web服务器的安全性。