计算机网络知识总结

三次握手,四次挥手

1.为什么需要三次握手才能建立连接
是为了初始化Sequence Number的初始值(seq)
通信双方要互相通知对方自己初始化的seq,这个号要作为以后的数据信号,以保证应用层的数据不会因为网络上的问题而乱序,TCP会用这个序号来拼接数据,第三次握手时因为要客户端告知服务器,我已经收到你发的seq了

黑客故意多次连接server然后关闭,服务器就一直重试,导致SYN队列满了之后,其它连接无法连接服务器

2.为什么需要四次挥手
因为全双工通信,发送方和接收方都需要FIN报文和ACK报文

3.为什么出现大量的close_wait
对方关闭socket连接,我方忙于读或者写,导致没有及时关闭连接
在程序中的体现:写代码的人忘记closeSocket这句代码,或者是线程池的配置不对
导致的后果:一个CLOSE_WAIT会维持至少2个小时的时间(这个时间外网服务器通常会做调整,要不然太危险了)。
如果有个流氓特地写了个程序,给你造成一堆的CLOSE_WAIT,消耗你的资源,那么通常是等不到释放那一刻,系统就已经解决崩溃了。
使用netstat来看closewait,如果closewait一旦达到上线,其它socket无法连接,就会出现too many open files异常

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

5.TCP的特点:面向链接,保证消息的可靠性,但开销比较大,效率比较低,是面向字节流的,有流量控制和拥塞控制

6.超时重传
RTT:发送一个数据包到收到对应的ACK,所花费的时间
RTO:重传的时间间隔
发送一个数据包之后RTO(定时器)启动,在一个RTO内没有完成数据包的传输,则进行重传(超时重传),保证了可靠的传输
7.http相关

7.htt状态码

8.http和http的区别


9.https真的安全吗

10.socket
socket是对TCP/Ip的抽象,可以通过socket编程来进行通信

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理