1.TCP和UDP的区别:
1)TCP是面向链接的,UDP是无链接的,即发送数据以前不须要创建链接
2)TCP提供可靠的服务,经过TCP链接传送的数据,无差错、不丢失、不重复且按序到达。UDP尽最大努力交付,即不保证可靠交付
3)TCP传输效率相对较低,UDP传输效率高,适用于对高速传输和实时性有较高的通讯或广播通讯
4)TCP链接只能是点对点、一对一的。UDP支持一对1、一对多、多对1、多对多的交互通讯。
2.TCP的可靠 & 提升性能 机制:
1)确认应答机制:TCP将每一个字节的数据都进行了编号,即为序列号,每个ACK都带有对应的确认序列号,会告诉发送者,我已经收到了哪些数据,下一次从哪里开始发。
2)超时重传机制:分两种状况:(1)主机B在规定的时间内没有及时收到主机A发送的报文。(2)主机A未收到B发来的确认应答,会触发超时重传,即再次发送相同的包。
在Linux中,超时以500ms为一个单位进行控制,每次断定超时重发的超时时间都是500ms的整数倍,以指数形式递增,累计到必定的重传次数,TCP认为网络或者对端主机出现异常,强制关闭链接。
3)滑动窗口:由于一发一收的方式性能较低,那么一次发送多条数据,就能够提升性能。
窗口大小指的是无需等待确认应答而能够继续发送数据的最大值。例如窗口大小是4000个字节,则发送前四个段的时候,不须要等待任何ACK,直接发送。收到第一个ACK后,滑动窗口向后移动,继续发送第五个段的数据,以此类推(窗口越大,网络的吞吐率越高)。
4)流量控制:发送端能够根据接收端的处理能力,来决定发送端的发送速度。
5)拥塞控制:慢启动机制,先发少许的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据。拥塞窗口的增加速度是指数级别增加的,当到达阈值后,就会按照线性方式增加。
当TCP开始启动的时候,慢启动阈值等于窗口最大值。
在每次超时重发的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置1.
6)延迟应答:若是接收数据的主机马上返回ACK应答,这时候返回的窗口可能比较小。所以,能够等待接收端将接收到的数据处理以后再进行应答。这样网络吞吐量就越大,传输效率也越高。
延迟应答也有数量限制,通常每隔2个包就应答一次。
时间限制,通常超过200ms就应答一次。
7)捎带应答
3.TIME_WAIT为何是2MSL?
MSL是TCP报文的最大生存时间,所以TIME_WAIT持续存在2MSL的话,就能保证在两个传输方向上的还没有被接收或迟到的报文段都消失,同时也在理论上保证最后一个报文可靠到达。
4.CLOSE_WAIT:通常而言,对于服务器上出现大量的CLOSE_WAIT状态,缘由就是服务器没有正确的关闭,致使四次挥手没有正确完成。
5.解决IP地址不够用的三种方法:
1)动态分配IP地址:只给接入网络的设备分配IP地址
2)NAT技术:可以将私有IP通讯时转换成全局IP
3)IPV6:IPV6与IPV4是两个互不相干的协议,彼此不兼容。IPV6用16字节128位来表示一个IP地址。
6.ARP协议:创建了主机IP地址和MAC地址的映射关系。
工做流程:1)原主机发出ARP请求,询问“IP地址是...的主机的硬件地址是多少“,并将这个请求广播到本地网段。2)目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给原主机,将本身的硬件地址填写到应答包中。3)每台主机都维护一个ARP缓存表,能够用arp -a命令查看。缓存表中的表项有过时时间(通常为20分钟),若是20分钟内没有再次使用某个表项,则该表项失效。下次还要发ARP请求来得到目的主机的硬件地址。缓存