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八种方法
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: Basic2.5 HTTP响应码
1xx(临时响应)
表示临时响应并需要请求者继续执⾏操作的状态代码。
2xx(成功)
3xx(重定向)
表示要完成请求,需要进⼀步操作。通常,这些状态代码⽤来重定向。
4xx(请求错误)
5xx(服务器错误)
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服务器默认端⼝ 分布式文件系统