网络、互联网、因特网
网络:许多电脑通过交换机组成局域网(电脑+交换机 100米范围内)
互联网:网络通过路由器接入广域网(网络+路由器)
因特网:全球最大的互联网
ISP电信运营商
多层次的ISP结构的因特网
局域网与广域网的区别
1.覆盖范围不同
2.实现技术不同
3.局域网:购买设备自己维护,带宽固定,覆盖范围有限;广域网:买服务,买带宽
三种数据交换
电路交换:导致通信线路利用率很低
报文交换
分组交换:高效可靠迅速灵活,但时延开销大
计算机网络性能
1.速率
2.带宽:最高速率
3.吞吐量:每秒传输数据量
4.时延:发送时延、传播时延、排队时延、处理时延
发送时延=数据块长度(比特)/信道带宽(比特/秒)
传播时延=信道长度(米)/信号在信道上的传播速率(米/秒)
排队时延
处理时延
5.时延带宽积 = 传播时延*带宽
6.往返时间-RTT:发送数据到接收确认
7.利用率:信道利用率、网络利用率
信道利用率=有数据通过时间/(有+无)数据通过时间
网络利用率=全网络的通道利用率的加权平均值
计算机网络体系结构
OSI参考模型7层:
应用层:能够产生网络流量,和用户交互的应用程序
表示层:加密、压缩
会话层:服务与客户端建立的会话,可以查木马
传输层:可靠传输-建立会话、不可靠传输-不建立会话、流量控制:当服务端发送给客户端的数据,客户端处理不过来的时候,进行流量控制。
网络层:ip地址编址,负责选择最佳路径
数据链路层:数据封装、添加MAC地址
物理层:电压、接口标准
独立、灵活、标准化
网络安全和OSI参考模型
物理层安全:统一局域网下的电脑,没有密码可以相互访问
数据链路层安全:ADSL 无线 AP 密码
网络层安全:保密性高的部门设置不允许访问外网,其他部门可以通过设置路由器网段访问外网
应用安全:SQL注入、上传漏洞等
OSI、TCP/IP 、五层体系的关系
数据发送的过程
数据交换设备对应OSI7层模型
网关:应用层、传输层
路由器:网络层(路由选择、存储转发)
交换机:数据链路层、网络层(识别MAC地址,根据mac地址转发,将mac地址和对应的端口号记录在地址表中)
网桥:数据链路层(连接两个广域网,根据mac地址转发帧)
集线器:物理层(连接终端)
中继器:物理层(增强信号)
http状态码
200:服务端接收请求并处理
202:服务端接收请求但未处理
301:重定向到新的位置
401:用户token信息失效,需要重新登录
403:服务端收到请求但拒绝处理
404:资源不存在
500:服务端代码出错
502:网关错误,可能是上游服务器返回无效的响应(连接中断)
503:服务器正在维护,或者访问过载导致
504:网关或代理服务器没有收到上游服务器响应(超时)
http过程
http方法
get(获取资源)、post(提交资源)、put(修改服务器资源)、delete(删除服务器资源)
区别:传输数据的数量限制、文件传输、输入未知字符的风险
http是一个无状态、无连接的协议。
无状态:对事务处理没有记忆能力,服务器不知道客户端的状态,客户端本身也不会记录;每个请求都是独立的。
优点:释放服务器压力
缺点:服务器处理后续请求,需要重传
解决方案:cookie+session
在浏览器保存cookie字段,将前面的请求信息保存在cookie中,关闭浏览器删除,或者可以手动删除
服务端内存保存session值,传递给客户端。有超时问题、资源占用、清除sessionID问题
无连接:每次连接只处理一个请求;服务器处理请求,接收客户端应答后断开连接
网页复杂,每次请求后释放连接,效率很低,资源浪费,服务器压力大
connection响应头字段值Keep-alive表示tcp连接不关闭。【但不会永久保持连接,服务器可设置】
http1.0与http1.1有什么区别
1.http1.0为短连接,http1.1请求头携带connection:keep-alive,建立长连接
2.http1.0一个连接对应一个请求一个响应,1.1连接过程可实现多个请求多个响应,且不需要等待响应可发送下一个请求
3.http1.1增加了100状态码,允许客户端向服务端发送请求头待确认后再发送请求体内容,节省了带宽
4.http1.0认为一个主机拥有唯一IP;http1.1中一个IP对应多个主机,增加了host指明主机名
5.http增加更多新请求头,错误响应状态码与缓存机制。
token +签名认证 保证请求安全性 不被篡改
1.客户端访问认证服务webApi,获取token
2.客户端用获取到的token与请求参数,利用签名算法,生成计算签名;访问对应的api
3.服务端接收到请求后,根据token与请求参数,同样计算签名,与客户端的计算签名做对比,一致,则正常访问,否则返回错误信息。
http请求响应报文详细介绍
请求报文:请求行(请求方法、url、http协议及版本)、请求头(key-value格式,可自定义)、空行(发送回车、换行,通知服务器一下没有请求头)、请求体(get请求没有)
响应报文:响应行(http协议及版本、状态码、状态码描述)、响应头、空一行、响应体
200,请求成功
302,重定向
403,服务拒绝请求
404,服务器找不到请求的网页
503,服务不可用
http八种请求方法:
get 请求指定的页面信息,并返回实体主体
post 向指定资源提交数据,进行数据处理
option 允许客户端查看服务器的性能
head 类似get请求,只是响应没有具体内容,用于获取报头
delete 请求服务器删除指定的页面
put 从客户端向服务器传送数据取代指定文档内容
connect 预留能够将连接改为管道方式的代理服务器
trace 回显服务器收到的请求,主要用于测试或诊断
http与https区别
端口:http 80 https 443
资源:https需要加解密,耗费更多的CPU内存
安全:https需要认证证书,http无法验证身份
https原理
服务端给客户端传输证书(公钥)
客户端对证书进行解析,没问题,生成私钥,利用公钥对私钥进行加密,发送给服务端
服务端拿到信息,使用公钥对这个信息解密,拿到私钥,之后两端可以用私钥进行通信
服务端将消息用私钥进行对称加密,并且传送给客户端
客户端用私钥进行解密,拿到消息
总结:客户端利用服务端的公钥加密,将私钥传递给服务端,之后服务端与客户端之间的通信就通过私钥进行了。从性能角度解释加密原理,先建立非对称加密后,约定私钥,之后用私钥进行对称加解密。对称解密速度更快,但是安全性较低。
网站访问过程
输入url
DNS解析
建立tcp连接
客户端发送http请求
服务端处理请求
服务端响应请求
浏览器展示HTML
浏览器获取其他在HTML中的资源
TCP、UDP区别
网络层,借助ARP、IP、路由协议实现数据的转发,从而实现数据的传输,但当数据包比较大,通过网络层的协议没有办法保证数据的完整性,所以在传输层定义了TCP、UDP协议,并且定义端口,寻找应用程序,从而实现端到端的数据传输
1.TCP有连接;UDP无连接
2.TCP需要建立三次握手,含有确认、拥塞、重传机制,对系统资源要求多
3.UDP不需要一系列的复杂认证,速度快;TCP速度慢
4.TCP含有确认机制,数据可靠,有序;UDP不可靠、无序
5.TCP面向字节流(流模式);UDP面向报文(数据报模式)
TCP对应的协议
FTP文件传输协议(端口21)
Telnet远程登录(端口23)
SMAP邮件传输协议-发送(端口25)
POP3邮件传输协议-接收(端口110)
HTTP:超文本传输协议(端口80)
HTTPS端口443
UDP对应的协议
DNS域名解析服务,端口53
SNMP网络管理协议,管理网络设备,端口161
TFTP简单文件传输协议,端口69
DNS域名系统
将域名转换为IP地址如果本地域名服务器的本地缓存没有该域名记录
客户机,发送域名解析请求,到本地域名服务器
本地域名服务器,发送域名解析请求,到根域名服务器
根域名服务器,返回顶级域名服务器地址,到本地域名服务器
本地域名服务器,发送域名解析请求,到顶级域名服务器
顶级域名服务器,返回授权域名服务器地址,到本地域名服务器
本地域名服务器,发送域名解析请求,到授权域名服务器
授权域名服务器,返回域名对应ip地址,到本地域名服务器
本地域名服务器,发送ip地址,到客户机,并且在本地记录
DNS协议属于应用层。
TCP的三次握手、四次挥手原因过程
三次握手【建立TCP连接】
形象比喻
第一次,你听得到吗?
第二次,听到的,你呢?
第三次,我也听得到(1)客户端向服务端发送SYN(seq=x)包,并进入发送状态(2)服务端接收SYN包,发送一个ACK(ack=x+1)包给客户端去确认,并且发送一个SYN(seq=y)包,进入接收状态
(3)客户端接收到SYN+ACK包,向服务端发送ACK(ack=y+1)包,确认,发送完毕之后,客户端和服务端进入连接成功状态
完成三次握手
四次挥手【释放TCP连接】
形象比喻:老师与学生
学生:老师,下课了哦
老师:好的,我知道了哈,讲完这道题咱们下课
老师:好了,今天的课程就到这里,下课吧
学生:老师再见。
第一次挥手,客户端发送FIN(seq=u)包,给服务端,表示连接释放,并且停止发送数据,进入终止等待1状态(FIN-WAIT-1)
第二次挥手,服务端收到FIN包,发出确认包ACK(ack=u+1),带上序列号seq=v,服务端进入关闭等待状态(CLOSE-WAIT),等客户端收到请求,状态变成终止等待2(FIN-WAIT-2)
第三次挥手,服务端将数据发送完,想客户端发送释放连接包FIN包(seq=w),并且发送ACK包(ack=u+1),服务端进入最后确认状态(LAST-ACK)
第四次挥手,客户端收到服务端的连接释放报文,发出确认报文ACK包(ack=w+1),带上序列号seq=u+1,发送完成,客户端进入时间等待状态(TIME-WAIT),等到服务端接收到客户端的确认,进入CLOSED状态
三次握手的原因
客户端服务端模式。
防止失效的连接请求报文段突然又传送到服务端,产生错误。一种特殊情况,A向B发送建立连接请求,长时间没有得到B的确认,于是再一次发送请求,连接成功,假设第一次发送的请求没有丢失,只是因为网络节点导致延迟,此时B以为A重新建立连接,向A确认并等待,导致B的资源浪费。
四次挥手的原因
因为全双工,发送方与接收方都需要FIN和ACK报文才会断开连接。
为什么会有TIME-WAIT状态?
确保有足够时间让服务端接收到ACK包,如果服务端没有收到消息,会请求客户端重新发送。如果服务端收到消息,客户端在2MSL中没有收到消息,证明客户端已经收到了断开连接的确认信息,可以关闭客户端。
tcp、http区别
TCP协议是一种数据包传输控制协议;HTTP是超文本传输协议。
TCP是面向连接的传输协议,传输层协议;HTTP是用来规定客户端与服务端数据传输格式的协议,应用层协议
HTTP是基于TCP的协议实现
cookie与session的区别cookie与session出现的原因都是因为http无状态的特性,导致每次请求结束,都需要重连。为了解决这个问题,出现了cookie和session,cookie是存储在浏览器中,请求信息会存储一份到cookie中,每次请求时带上cookie,与服务端session进行认证,cookie信息随着浏览器删除而删除,也可以手动删除。session信息,存储在服务器内存里,永久保存,http请求过程中,将session信息传递给客户端。存在失效的情况。
流量控制、拥塞控制的方法和手段
流量控制:A与B建立连接,A发送数据给B,B根据自己接受缓存的大小确定窗口值大小,告知A,A发送的数据不大于该窗口值【点对点通信的流量控制】
拥塞控制:防止过多的数据注入网络中,根据整个网络的负载进行调整
ARP协议
地址解析协议
1.每个主机在自己的ARP缓冲区建立一个ARP列表,记录IP地址与MAC地址的对应关系
2.源主机发送数据前,先检查ARP列表是否存在目标主机的MAC地址,存在,直接发送;不存在,向本网段的所有主机广播发送ARP数据包(源主机IP地址、源主机MAC地址、目标主机IP地址)。
3.本网段的主机接收到该ARP数据包,检查该目标IP地址是不是自己,不是,忽略;是,将源主机的IP地址与MAC地址记录在ARP列表中(有的话覆盖),然后将自己的MAC地址写入ARP响应,发送给源主机
4.源主机收到响应,将目标主机的IP地址与MAC地址写入ARP列表,根据此信息发送数据。如果没有收到响应表示查询失败
广播发送ARP请求,单播接收ARP响应。
ARP协议在TCP/IP体系中属于网际层,在OSI体系中属于数据链路层。