TCP连接相关

TCP连接相关,第1张

为什么要有三次握手,因为如果只有两次握手,那么

第一次:客户端发送一个syn包给服务器,里面有一个随机生成的syn,然后客户端处于syn_send状态

第二次:服务端收到客户端发来的syn包之后,确认syn包,也就是生成一个ack=syn+1,然后再自己随机生成一个syn包,即syn+ack包,然后返回给客户端,自己变成syn_recv状态

第三次:客户端收到服务端发来的syn+ack包之后,确认ack是正确的之后,返回一个ack=syn+1给服务端,此包发送完毕,客户端进入了ESTABLISHED状态,服务端收到ack包后也进入ESTABLISHED状态。

SYN攻击,当第二次握手服务端发送了syn+ack包之后,收到客户端发送的ack之前这段时间的tcp链接成为半连接,此时服务端处于syn_recv状态。当大量客户端随机IP疯狂发送tcp链接请求时,客户端以为是不同用户的请求,所以队列中全是半连接,然后导致服务器宕机,正常请求被丢弃。

第一个包发送过程丢失

A会周期性超时重传,直到收到B的确认

第二个包发送过程丢失

B会周期性超时重传,直到收到A的确认

第三个包发送过程丢失

A发送完数据后单方面进入TCP的ESTABLISHED状态,B还处于半链接:

TCP协议为什么需要三次握手?

第一次:客户端发送一个fin给服务端表示自己要断开连接了,然后进入fin_wait_1状态

第二次:服务端收到fin后,发送一个ack=fin+1给客户端,服务端进入close_wait状态,客户端进入fin_wait_2状态

第三次:服务端发送一个fin,用来关闭服务端到客户端的数据传输,服务端进入last_ack状态

第四次:客户端收到fin后,进入time_wait状态,然后发送一个ack=fin+1给服务端,服务端确认后进入close状态,完成四次挥手

TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。如果要正确的理解四次分手的原理,就需要了解四次分手过程中的状态变化。

答案解析:

浏览器对并发请求的数目限制是针对域名的,即针对同一域名(包括二级域名)在同一时间支持的并发请求数量的限制。如果请求数目超出限制,则会阻塞。因此,网站中对一些静态资源,使用不同的一级域名,可以提升浏览器并行请求的数目,加速界面资源的获取速度。

在 HTTP/1.0 中,一个http请求收到服务器响应后,会断开对应的TCP连接。这样每次请求,都需要重新建立TCP连接,这样一直重复建立和断开的过程,比较耗时。所以为了充分利用TCP连接,可以设置头字段 Connection: keep-alive ,这样http请求完成后,就不会断开当前的TCP连接,后续的http请求可以使用当前TCP连接进行通信。

第一次访问有初始化连接和SSL开销

初始化连接和SSL开销消失了,说明使用的是同一个TCP连接。

HTTP/1.1 将 Connection 写入了标准,默认值为 keep-alive 。除非强制设置为 Connection: close ,才会在请求后断开TCP连接。

所以这一题的答案就是:默认情况下建立的TCP连接不会断开,只有在请求头中设置 Connection: close 才会在请求后关闭TCP连接。

HTTP/1.1 中,单个TCP连接,在同一时间只能处理一个http请求,虽然存在Pipelining技术支持多个请求同时发送,但由于实践中存在很多问题无法解决,所以浏览器默认是关闭,所以可以认为是不支持同时多个请求。

HTTP2 提供了多路传输功能,多个http请求,可以同时在同一个TCP连接中进行传输。

页面资源请求时,浏览器会同时和服务器建立多个TCP连接,在同一个TCP连接上顺序处理多个HTTP请求。所以浏览器的并发性就体现在可以建立多个TCP连接,来支持多个http同时请求。

Chrome浏览器最多允许对同一个域名Host建立6个TCP连接,不同的浏览器有所区别。

补充

如果图片都是HTTPS的连接,并且在同一域名下,浏览器会先和服务器协商使用 HTTP2 的 Multiplexing 功能进行多路传输,不过未必所有的挂在这个域名下的资源都会使用同一个TCP连接。如果用不了HTTPS或者HTTP2(HTTP2是在HTTPS上实现的),那么浏览器会就在同一个host建立多个TCP连接,每一个TCP连接进行顺序请求资源。

参考:

[1]. 第8题-浏览器HTTP请求并发数和TCP连接的关系

电脑TCP/IPv4设置方法:

工具/原料

win10系统电脑

1、点击电脑桌面左下角WIN图标,d出页面之后点击设置按钮。

2、d出设置对话框之后点击网络和Internet。

3、进入网络和Internet对话框之后。点击左侧以太网。

4、d出界面点击更改适配器选项。

5、在更改适配器选项下选择以太网并右击,选择属性。

6、d出属性栏胡,找到internet协议版本4(TCP/IPv4),选中并且点击属性。

7、在internet协议版本4(TCP/IPv4)下,选择使用下面的IP地址,然后按需求设置IP地址和DNS地址,设置完成之后点击确定。

以win7无线连接为例说明,主要有二种方法进入设置TCP协议

方法一:

1、点击桌面右下角网络图标

2、选中以连接网络,右键点击选择状态

3、看一下上面的IP后面那一个有Internet,然后点击下方属性

4、在属性中找到第三步中的TCP协议双击打开即可设置

方法二:

1、打开“控制面板”或者桌面“网络”,点击“查看网络状态和任务”或者“网络和共享中心”

2、不管哪种途径都是为了进入“网络和共享中心”点击“无线网络连接”

3、然后同方法一一样,点击“属性”,双击要设置的TCP协议即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11185554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存