一、网络
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-物理层 | 硬件 |
这个图片也很好的解释了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)来检查。
(3)IP信息包传送
IP是网络之间信息传送的协议,可将IP信息包传送到目的设备,依赖IP地址和IP路由两种机制来实现。
1.2.4 TCP 和 UDP(传输层)
(1)TCP(传输控制协议)
一种面向连接的、可靠的、基于字节流的传输层通信协议
三次握手(建立连接)
下图便是三次握手的过程,通过这三次握手,便成功建立连接,可以开始传输数据
(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):
报文格式:请求行 - 请求头 - 报文主体
这个请求头中我们可以根据需要添加和修改相应的Header(比如: Cookie: 123)
同样的,也会接收到一个响应头(Response):
报文格式: 请求行 - 响应头 - 报文主体
主体和头之间要有空行来区分两者
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服务器的安全性。
- 本文链接:http://siii0.github.io/WEB%E5%9F%BA%E7%A1%80%E6%80%BB%E7%BB%93/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。