计算机网络零碎知识点
1.Time_Wait作用
网上看了好多答案感觉都太抽象,《网络是怎样连接》一书中对TimeWait的解释是为了防止误操作
等待这段时间是为了防止误操作,引发误操作的原因有很多,举一个最容易理解的例子:
如果客户端进行挥手四次挥手,最后返回ACK号丢失了,结果会如何?这是,服务器没有受到ACK号,可能会重发一次FIN。如果这是客户端的套接字已经删除了,会发生什么事呢?套接字被删除,套接字对应的端口会被释放出来,这时如果别的应用程序要创建套接字,碰巧又分配到了同一个端口,而服务器重发的FIN正好到达,会怎么样呢?本来这个FIN是要发给刚刚删除的那个套接字的,但新套接字具有相同的端口号,这个FIN就错误的跑到新的套接字里,新套接字就开始执行断开操作了
具体等待时间一般是2msl(2倍的最大报文存活时间,一来一回)
总结
针对客户端:防止误操作
针对服务端:使服务端正常执行套接字关闭
2.http长连接和websocket
- 1.http长连接1.0中不支持,1.1中才出现,使用keep-alive标识,一个连接中,多个request和response,并没有真的会话状态,是“伪长连接”
- 2.websocket跟Http基本上完全是两个协议,是为了遵循浏览器规范,所以websocket的连接请求使用http三次握手
3.Http和tcp区别?什么时候选择用tcp而不用http
4.常见网络协议对应端口
协议 | 端口 |
---|---|
HTTP | 80 |
HTTPS | 443 |
DNS | UPD 53 |
DHCP Server | 67 |
DHCP Client | 68 |
5.浏览器输入域名的DNS查询过程
浏览器缓存->系统缓存(通过系统调用来获取)->本地hosts文件->路由器缓存->ISP或者本地DNS服务器->递归查询
详细的查看大佬博客
6.GET和POST区别
网上抄的
- 1.get幂等,post不是幂等
- 2.get浏览器回退无害,post会再次提交
- 3.get只能进行url编码,post可以支持多种编码方式
- 4.post比get更加安全,因为get参数会显示在url上
- 5.GET请求会被浏览器主动cache,而POST不会,除非手动设置
- 5.GET产生一个TCP数据包;POST产生两个TCP数据包