网络基础知识复习

网络基础知识复习

一、OSI开放互联参考模型

(1)七层协议

第1层:物理层。
作用:
—传输比特流,即 0、1二进制数据——>转化为电流强弱(传输) ——>转化为0、1机器码(目的地)

第2层:数据链路层。
需求背景:
—在传输比特流过程中,会产生错传、数据不完整的可能。
作用:
—提供错误检测
—将比比特数据组成帧
—“交换机”工作在该层,对帧解码,把帧中包含的信息,发送到接收方

第3层:网络层。
需求背景:
—随着网络节点的增加,点对点通信需要经过多个节点,如何找到最佳节点,如何找到最佳路径,便成为了首要需求。
作用:
—将“网络地址”翻译成对应的“物理地址”
—并决定 如何将 数据 “发送方” 路由到 “接收方”
—通过判断 网络优先权、网络拥塞程度、服务质量、可选路由的花 费——>决定从一个网络a到网络b的最佳路径
—路由器属于网络层
—该层的数据称为“数据包”
—主要协议:TCP/IP中的 “IP” 协议

第4层:传输层。
需求背景:
—随着网络通信需求进一步扩大,通信过程需要发送大量数据(海量文件传输),需要很长时间,网络中断很多次,为保证大量文件传输的准确性,需要对发出去的数据进行切分,切割为一个一个的段落 ,丢失的段落要不要重传?每个段落需要按顺序到达吗?
作用:
—解决了主机间的数据传输(可以是不同网络的)
—解决了传输质量的问题
—是OSI中最重要的一层
—传输协议,进行流量控制,基于接收方可接受数据的快慢程度,规定适当的发送速率
—将超过以太网最大传输程度的数据包强行分割,即发送方节点的传输层将长度>1500byte的数据包分割成较小的数据片,同时对每一数据片安排一序列号,以便数据片到达接收方节点的传输层时,能以正确的的方式重组(排序)
–主要协议:TCP/IP协议中的 “TCP 和 UDP协议”

第5层:会话层。
需求背景:
用户体验级别角度,每次都要调用TCP去打包?调用IP协议去找路由?自己发送?——》需要:自动收发包,自动寻址的功能。
作用:
–自动寻址的功能
–建立和管理应用程序之间的通信

第6层:表示层
需求背景:
Linux 向—>windows 发包?文件格式不一致?exe不能在Linux运行,解决不同操作系统通信的语法问题。
作用:
–解决不同系统之间的通信语法问题
–数据能按照网络能理解的的方案进行格式化
–此格式化因使用的网络的不同而不同
–但接收方依然无法识别发送方的数据信息

第7层:应用层
需求背景:
在表示层中,发送方虽然知道自己发送的数据是什么,转换成字节数组之后有多长,但接收方肯定不知道,所以应用层解决该问题。
消息头:
–规定发送方和接收方必须使用一个固定长度的消息头
–消息头必须使用某种固定的组成
–消息头里必须记录消息体的长度等一些列信息
–以便接收方能够正确的解析发送方发送的数据
作用:
–旨在更方便应用从网络中接受的数据
–数据的传递没有该层也可直接在两台电脑剪开干(0.1数据)
主要协议:
–TCP/IP协议中的“HTTP协议”
数据发送与接收:
–先自上而下,后自下而上处理数据“头部”

image-20200920165039862


二、TCP/IP

背景:
–OSI的实现“TCP/IP”
–OSI并不是一个标准,而是一个制定标准时的一个概念性框架
–事实的标准是TCP/IP四层架构参考模型
–美国领头推广使用TCP/IP
–TCP/IP协议泛指 TCP、UDP、ICMP…等协议

image-20200920170347882

–“OSI”注重通信协议必要的功能是什么
–“TCP/IP”更强调在计算机上实现协议应该开发哪种程序
数据发送与接收:
–先自上而下,后自下而上处理数据“头部”

image-20200920171142491


三、TCP的三次握手

背景:
IP协议是无连接的通信协议,不会占用两个通信中的计算机之间的通信线路,IP降低了对网路线路的需求,每条线可同时满足不同计算机之间的通信需要。通过IP,其他数据会被分割成较小的独立的包,并在Internet在计算机之间传送。
IP负责将每个包路由到它的目的地,但IP协议没有做任何事情来确认数据包是否按顺序发送或者包是否被破坏。因此,IP数据包是“不可靠”的,需要它的上层协议做出控制。
传输控制协议TCP简介:
–面向连接的、可靠的、基于字节流的传输层通信协议
–将应用层的数据流分割成报文段,并由IP发送给目标节点的TCP层
–数据包都有序号(sequence number),对方收到则发送 ASK确认,未收到则重传
–使用奇偶校验和来检验数据在传输过程中是否有误

TCP Flags:
–URG:紧急指针标志
–ACK:确认序号标志
–PSH:push标志
–RST:重置连接标志
–SYN:同步序号,用于建立连接过程
–FIN:finish标志,由于释放连接

TCP报文头:

image-20200921165225006


三次握手:
–握手是为了建立连接,流程图:image-20200921165741810
–在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
–第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN-SEND状态,等待服务器确认;
–第二次握手:服务器收到SYN包,必须确认客户端的SYN(ack=j+1),同时自己也发送一唱歌SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
–第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTAB_LISHED状态,完成三次握手。

首次握手的隐患—SUN超时:
问题起因:
–Server收到Client的SYN,回复SYN-ACK的时候未收到ACK确认
–Server不断重试直至超时,Linux默认等待63秒才断开连接
后果:
–恶意程序发送SYN报文给服务器,使客户端不能发送成功
针对SYN Flood的防护措施:
–SYN队列满后,通过tcp_syncookies参数回发SYN Cookie
–若为正常连接则Client会回发SYN Cookie,直接建立连接

保活机制:
–解决建立连接后,Client出现故障的问题
–向对方发送保活探测报文,如果未收到响应则继续发送
–尝试次数达到保活探测数仍未受到响应则中断连接

四、TCP的四次挥手

“挥手”是为了终止连接,TCP四次挥手如下图:

image-20200921194012345

TCP采用四次挥手来释放连接
–第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_Wait_1状态;
–第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态;
–第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态;
–第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,结者发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。最后Client等待2MLS后进入CLOSED状态。

为什么有TIM E_WAIT状态?
原因:
1.确保有足够时间让对方接收到ACK包
2.避免新旧连接混淆

为什么需要四次握手才嗯那个释放连接?
原因:因为全双工,发送方和接收方都需要FIN报文和ACK报文

服务器出现大量CLOSE——WAIT状态的原因?
原因:对方关闭socket连接,我方忙于读或写,没有及时关闭连接
解决:
1.检查代码,特别是释放资源的代码
2.检查配置,特别是处理请求的线程配置

五、UDP

简介:
UDP报文结构:

image-20200921202415447

UDP的特点:
–面向非链接
–不维护连接状态,支持同时多个客户端传输相同的消息
–数据包报头只有8个字节,额外开销较小
–吞吐量只受限于数据产生速率、传输速率以及机器性能
–尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表
–面向报文,不对应用程序提交的报文信息进行拆分或者合并

TCP和UDP的区别:
1.面向连接 (三次握手)VS 无连接(多播发布,单个点发给多个点)
2.可靠性(前者利用握手和确认重传机制,提供可靠性的保证;后者UDP可能会丢失,不可靠)
3.有序性(TCP利用序列号保证消息包的顺序交付,到达可能无序,但TCP会进行排序;而UDP不具备有序性)
4.速度(TCP速度慢,建立连接要保证消息的可靠性和有序性;而UDP更适合队速度比较敏感的应用,eg:在线视频媒体,电视广播,多人在线游戏等)
5.量级(TCP重量级,源数据的头为20字节,UDP轻量级,8个字节)

六、TCP的滑动窗口

1、RTT和RTO
(1)RTT:发送一个数据包到对应的ACK,所花费的事件
(2)RTO:重传时间间隔
2、TCP使用滑动窗口做流量控制与乱序重排
作用:
(1)保证TCP的可靠性
(2)保证TCP的流控特性
(3)滑动窗口机制体现了TCP面向在字节流的设计思路

image-20200922202924706

3、窗口数据的计算过程:
image-20200922203728161

image-20200922203817794

–EffectiveWindow < AdvertisedWindow
4、TCP会话的发送方

image-20200922204628833

image-20200922204713185

5、TCP会话的接收方

image-20200922205031637

··TCP最基本的传输可靠性:确认重传机制
··TCP的滑动窗口的可靠性夜神建立在“确认重传机制”基础上的
–滑动窗口的大小,可以依据一定策略动态调整。
–应用会根据自身的处理能力的变换,通过本端TCP接收窗口的大小的控制来实现对端的发送窗口进行流量限制。

七、HTTP简介

1、超文本传输协议HTTP主要特点:
(1)支持客户/器模式
(2)简单快速
(3)灵活
(4)无连接
(5)无状态
image-20200924065050568
2、HTTP请求结构

image-20200924065359663

3、HTTP响应结构

image-20200924065719121

4、请求响应步骤
(1)客户端连接到Web服务器
(2)发送HTTP请求
(3)服务端接收请求并返回HTTP响应
(4)释放TCP连接
(5)客户端浏览器解析HTML内容
5、常见问题:
–在浏览器地址栏键入URL,按下回车后经历的流程?
–答案:
(1)DNS解析(解析域名,从各种缓存中解析出IP地址)
(2)TCP连接(TCP三次握手)
(3)发送HTTP请求
(4)服务器处理请求并返回HTTP报文
(4)浏览器解析渲染页面
(5)连接结束(TCP四次挥手)
6、HTTP状态码
(1)1xx :指示信息–表示请求已接受,继续处理
(2)2xx :成功–表示请求已被成功接收、理解、接受
(3) 3xx :重定向–要完成请求必须进行更进一步地操作
(4)4xx :客户端错误–请求有语法错误或全球无法实现
(5)5xx :服务端错误–服务端未能实现合法的请求
(6)常见状态码:

image-20200924072314662

7、GET请求和POST请求的区别
(1)Http报文层面:GET将请求信息放在URL,POST放在报文体中
(2)数据库层面:GET符合幂等性和安全性,POST不符合
(3)其他层面:GET可以被缓存、被存储,而POST不行
8、Cookie和Session
(1)Cookie简介
–是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端
–客户端再次请求的时候,会把Cookie回发
–服务器接收到后,会解析Cookie生成与客户端对应的内容
(2)Cookie的设置以及发送过程

image-20200924074529121

(3)Session简介
–服务器端的机制,在服务器上保存信息
–解析客户端请求并操作session id, 按需求保存状态信息
(4)Session的实现方式
–使用Cookie来实现
–使用URL回写实现
(5)Cookie和Session的区别
–Cookie数据存放在客户端的浏览器上,Session数据放在服务器上
–Session相对于Cookie更安全
–若考虑减轻服务器负担,应当使用Cookie

八、HTTP和HTTPS

1、HTTPS的简介image-20200924153113514
2、SSL(Security Sockets Layer,安全套接层)
–为网络通信提供安全及数据完整性的一种安全协议
–是操作系统对外的API,SSL后更名为TLS
–保证网络通信的安全性和数据完整性的两个手段:身份验证、 数据加密
3、加密的方式
–对称加密:加密和解密都使用同一个密钥
(2)非对称加密:加密使用的密钥和解密使用的密钥是不相同的 (性能过低)
(3)哈希算法:将任意长度的信息转换为固定长度的值,算法逆 (eg:MD5算法)
–数据签名:证明某个消息或者文件是某人发出/认同的
4、HTTPS数据传输流程
(1)浏览器将 支持的加密算法信息发送给服务器
(2)服务器选择一套浏览器支持的加密算法,以证书的形式回 发浏览器
(3)浏览器验证证书合法性,并结合证书公钥加密信息发送给 服务器
(4)服务器使用私钥解密信息,验证哈希,加密响应消息回发 浏览器
(5)浏览器解密响应消息,并对消息进行验证,之后进行加密 交互数据
5、HTTP和HTTPS的区别
(1)HTTPS需要到CA申请证书,HTTP不需要
–HTTPS密文传输(有SSL加密传输协议),HTTP明文传输
(2)连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
(3)HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全
6、HTTPS真的很安全码?那倒未必
(1)浏览器默认填充http://,请求需要进行跳转,有被劫持的风险
(2)可以使用HSTS(HTTP Strict Transport Security)优化

九、Socket

需求背景:
在本地进程中,我们使用PID来唯一标识一个进程,PID只在本地唯一,在网络中就不唯一了,可能有冲突。这时,我们知道ip地址可以唯一标识一台主机,而TCP协议和端口号可以唯一标识主机中的一个进程,因此我们用 “IP地址 + TCP协议 + 端口号” 来唯一标识网络中的一个进程,能够唯一标识网络中的进程后,他们就可以利用Socket进行通信了。
1、Socket简介
(1)Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口

image-20200924163202898

(2)Socket的通信流程

输协议),HTTP明文传输

(2)连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
(3)HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全
6、HTTPS真的很安全码?那倒未必
(1)浏览器默认填充http://,请求需要进行跳转,有被劫持的风险
(2)可以使用HSTS(HTTP Strict Transport Security)优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值