计算机网络知识点(1)

一、HTTP与HTTPS

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)。HTTP运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份。 HTTPS是身披SSL(Secure Socket Layer) 的HTTP,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。

不同点:

1. 端口不同:使用不同的连接方式,使用的端口不一样。HTTP 80,HTTPS 443

2. 资源消耗:HTTPS使用加减密处理,消耗更多的资源。

3. 开销: HTTPS需要证书,需要向认证机构购买。

二、三次握手

客户端Client和服务器Server之间建立连接。

计算机网络知识点(1)

第一次握手:Server处于监听状态,Client向Server发送连接请求报文,并设置标志位SYN=1, ACK=0,发送***seq=x。且Client进入SYN-SENT状态。

第二次握手:Server收到Client的连接请求,若同意连接,则向Client发送连接确认报文,设置标志位SYN=1,ACK=1,

确认号ack = x+1,***seq = y。且Server进入SYN-RCVD状态。

第三次握手:Client收到确认报文后,检查ack是否为x+1,ACK是否为1。检查完后,向Server发出确认,设置标志位ACK=1,

ack=y+1,***为x+1。

三、TCP三次握手的原因

防止失效的链接请求到达服务器,让服务器错误打开链接

客户端发出的连接请求报文如果在网络中滞留,隔很长一段时间才能收到服务器端发回的连接确认。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。

四、四次挥手

TCP的四次挥手

计算机网络知识点(1)

第一次挥手:Client发送一个释放报文,此时FIN=1,***seq=u,用来关闭Client到Server的数据传送。Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,设置ACK=1,发送ack=u+1,***seq=v 给Client。此时TCP处于半关闭状态,Server可以向Client发送数据,但是Client不能向Server发送数据。同时也是为了让服务器发送还未传送完毕的数据。

第三次挥手:Server不再需要连接,发送释放报文,FIN=1,发送ack=u+1,seq=w,ACK=1,用来关闭Server到Client的数据传送,Server进入LAST-ACK状态。

第四次挥手:Client收到后发出确认ACK=1,seq=u+1,ack=w+1,进入TIME-WAIT状态,等待2 MSL后释放连接。Server进入CLOSED状态,完成四次挥手。

五、四次挥手的原因

客户端发送了FIN连接释放报文后,服务器收该报文进入CLOSE-WAIT状态。该状态是为了让服务器发送还未发送完的数据,传送完毕之后,服务器发送FIN连接释放报文。

在tcp连接握手时为何ACK是和SYN一起发送,这里ACK却没有和FIN一起发送呢。原因是因为tcp是全双工模式,接收到FIN时意味将不会再收到数据,但是还是可以继续发送数据。

 

六、TCP和UDP的区别和特点

1. 用户数据报协议 (user Datagram Protocol) 是无连接的,尽最大可能交付,没有拥塞控制,面向报文,支持一对一、一对多、多对一以及多对多的交互通信。

2.    TCP传输控制协议 (Transmission Control Protocol) 是面向连接的,提供可靠支付,有流量控制,拥塞控制,提供全双工通信,面向字节流,每一条TCP连接只能是点对点的。

 

七、DDos(Distributed Denial of Service) 攻击

服务器端会为每个请求创建一个连接,并向其返回确认报文,然后等待客户端进行确认。

(1)、DDos 攻击

    客户端向服务端发送请求链接数据包

    服务端向客户端发送确认数据包

    客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认

(2)、DDos预防(没有彻底根治的方法,除非不使用TCP)

    限制同时打开SYN半连接的数量

    缩短SYN半连接的时间

    关闭不必要的服务

 

八、TCP拥塞控制

计算机网络中的带宽、交换结点中的缓存及处理机等都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是 防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。注意,拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。拥塞控制的方法主要有慢启动、拥塞避免、快重传和快恢复。

发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,拥塞窗口区别于发送方窗口:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

计算机网络知识点(1)

(1). 慢启动:发送的最初执行慢启动,令cwnd=1,发送方只能发送1个报文段;当收到确认后,将cwnd加倍,所以之后发送方能够发送的报文段依次为2、4、6、8....

慢启动中的"慢"指的是cwnd的设定值,而不是cwnd的增长率。

(2). 拥塞避免:拥塞避免算法让拥塞窗口,即每经过一个往返时间RTT,(一个传输轮次所经历的时间其实就是往返时间RTT),就将发送方的拥塞窗口cwnd+1,是的拥塞窗口按照线性规律增长。

这里设置了一个慢启动门限,ssthresh,当cwnd>=ssthresh时,将进入拥塞避免,每轮次只将cwnd+1。

如果出现了超时,则令ssthresh = cwnd/2,cwnd = 1,重新执行慢启动

(3). 快重传:快重传是指接收方每收到一个失序的报文段后则立即发出重复确认。

例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。

(4). 快恢复:快恢复算法配合快重传使用。当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法,而是执行快恢复。因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。执行快恢复的操作是令 ssthresh = cwnd/2,cwnd = ssthresh。注意到此时直接进入拥塞避免。

 

慢启动和快恢复的快慢指的是cwnd的设定值,而不是cwnd的增长速率。慢启动时cwnd = 1,而快恢复时cwnd = ssthresh。

 

九、从输入网址到获取页面的过程

(1). 浏览器查询DNS (将域名和IP地址相互映射的一个分布式数据库) 。具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

(2). 浏览器获取域名对应的IP地址之后,浏览器向服务器请求建立连接,发起三次握手。

(3). TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;

(4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

(5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

(6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

 

参考博客:

https://blog.****.net/qq_39322743/article/details/79700863

https://blog.****.net/sdgihshdv/article/details/79503274