网络简单记

OSI七层模型
在这里插入图片描述

HTTP与Https 的区别

1、HTTP 是超文本传输协议,信息是明文传输,
	HTTPS 则是具有安全性的 SSL 加密传输协议。
2、HTTP 和 HTTPS 使用的是完全不同的连接方式,
	用的端口也不一样,前者是80,后者是443
3、HTTP 的连接很简单,是无状态的;
	HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
	(无状态的意思是其数据包的发送、传输和接收都是相互独立的。
	无连接的意思是指通信双方都不长久的维持对方的任何信息。)

在这里插入图片描述
添加了SSL套接。

TCP/IP通信数据流

在这里插入图片描述
TCP UDP区别

1、TCP提供面向连接的、可靠的数据流传输;而UDP提供的是非面向连接的、不可靠的数据流传输。
2、TCP只支持点对点通信;UDP支持一对一、一对多、多对一、多对多通信模式。
3、TCP面向字节流(传输单位称为TCP报文段),UDP面向报文(传输单位称为用户数据报)。
4、TCP注重数据安全性;UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
5、TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
6、TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;

socket 套接 四元组 ip:port + ip:port 唯一确认,区分每一个socket对应关系。

TCP三次握手四次挥手

在这里插入图片描述
TCP三次握手的意义

【目的】是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。

超时重传、拥塞控制、滑动窗口====》传输可靠、
	【滑动窗口】:
		用来告诉发送端一次可以发送数据的大小。即窗口标记了接收端缓存区的大小;
		【出现的原因】
			(1)对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后发送下一个数据段。
				这样做大大降低了传递效率。
			(2)使用滑动窗口,可以一次发送多条数据,提高性能。
		【其他知识】
			(1)接收端将自己缓冲区大小放进TCP头部的“窗口大小”字段,通过ACK告知发送端;
			(2)窗口大小是指无需等待确认应答而可以一次连续发送数据的最大值;
			(3)操作系统内核为了维护滑动窗口,需开辟发送缓冲区,来记录哪些数据还没有被应答,
				只有确认应答后才从缓冲区删除;
			(4)接收端发现自己缓存区快满了,将窗口大小设置更小发送给发送端,
				发送端收到后就会减慢发送速度;
			(5)接收端发现自己缓冲区满了,将窗口大小设置为0,此时发送端停止发送数据,
				而是定期发送一个窗口探测数据段,让接收端告诉它的窗口大小;
	
	【流量控制】:
		流量控制的目标是接收端,防止发送方发的太快,耗尽接收方资源,使接收方来不及处理;
		流量控制的机制是丢包。
		【如何实现流量控制?】
			通过设置滑动窗口大小,用ACK告知发送端自己缓存区还有多大,让发送端以合适的速度发送数据

	【拥塞控制】
		防止发送方发的太快,使网络来不及处理,导致网络拥塞。
		【原因】
			流量控制虽然可以高效的传递大量数据,
			但是如果刚开始阶段就发送大量数据,可能导致网络拥塞。
		【拥塞控制实现机制】
			(1)慢启动
			(2)加法增加:执行拥塞控制算法后,在收到对报文的确认后,
				就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,防止网络过早出现拥塞;
			(3)乘法减少:出现一次超时(网络拥塞)就把慢开始门限值ssthresh设置为当前拥塞窗口值的0.5倍。
		【发送端如何判断网络出现拥塞(丢包)】
			(1)定时器超时(没有在规定时间内收到某个发出去包的ACK)
			(2)收到三个重复的ACK
		【工作过程】
			(1)初始化:设置拥塞窗口cwnd为1(慢开始门限ssthresh---slow start threshold)
			(2)慢开始阶段:以指数增长
				拥塞窗口cwnd的初始值为1,发送第一个报文M0;
				发送端每收到一个确认,就把cwnd从加1到2,接着发送下两个报文M1和M2两个报文段;
				发送端收到每一个对新报文段的确认,就把发送端的cwnd从2加到4,发送4个报文段;
			(3)拥塞避免阶段:拥塞窗口按线性规律增长
				当拥塞窗口cwnd增长到慢开始门限ssthresh时,就执行拥塞避免算法,拥塞窗口按线性规律增长
			(4)拥塞调整阶段:拥塞窗口ssthresh减小为1/2
				假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了;
				ssthresh值变为12,拥塞窗口再重置为1,执行慢开始算法
				当cwnd=12时改为执行拥塞避免算法,每收到一个ACK就增加一个MSS的大小

在这里插入图片描述

为什么“握手”是三次,“挥手”却要四次?

建立连接时,被动方服务器端结束CLOSED阶段进入“握手”阶段并不需要任何准备,
	可以直接返回SYN和ACK报文,开始建立连接。
·释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,
	因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,
	经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。

为什么客户端在TIME-WAIT阶段要等2MSL?

为的是确认服务器端是否收到客户端发出的ACK确认报文。

服务器端在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文;

如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,
说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。
客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;
否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,
客户端可以进入CLOSED阶段,完成“四次挥手。

HTTPS加密(握手)过程

在这里插入图片描述
Get Post区别

1、GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源。
2、POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上;
	POST请求参数则被包装到请求体中,相对更安全。
3、GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小;
	而POST请求则是没有大小限制的。
4、Get请求参数数据会拼接到URL之后;POST的请求参数数据在请求报文的请求体里。

从输入网址到获得页面的过程

1、浏览器查询DNS ,获得域名对应的IP地址
2、获得IP地址之后,浏览器向服务器发起请求连接(三次握手)
3、TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求
4、服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,
	并将处理结果及相应的视图返回给浏览器
5、浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,
	则重复上述步骤并向服务器请求这些资源;
6、浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。
7、无连接 就四次挥手
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值