面试必备-计算机网络TCP/IP模型
Posted 小楠总
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试必备-计算机网络TCP/IP模型相关的知识,希望对你有一定的参考价值。
1. 计算机网络TCP/IP五层模型
2. TCP和UDP协议的区别
TCP和UDP协议的区别是什么?
TCP:面向链接的保证可靠传输的协议,通过TCP协议传输,得到的是一个顺序的无差错的数据流,能提供两台计算机之间的可靠数据传输。
既然有可靠的TCP协议,为什么还需要不可靠的UDP协议?
TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,通过三次握手方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低。可靠的协议肯定需要付出代价,因此TCP的传输效率远远不如UDP高。例如对数据的时间和检验必然会消耗计算机的计算时间和网络带宽。
不是所有的程序都需要保证数据传递的可靠性,例如视频聊天、音频传输、游戏、直播技术等只要保证数据连贯性即可,不考虑数据是否安全等问题,所以这些场景下用UDP更合适。
3. TCP中的三次握手和四次挥手
三次握手过程?
A对B说:我的序号是x,我要向你请求连接;(第一次握手,发送SYN包,然后进入SYN_SEND状态)
B听到之后对A说:我的序号是y,期待你下一句序号是y+1的话(意思就是收到了序号为x的话,即ack=x+1),同意建立连接。(第二次握手,发送ACK_SYN包,然后进入SYN_RCVD状态)
A听到B说同意建立连接之后,对A说:与确认你同意与我连接(ack=y+1,ACK=1,seq=x+1)。(第三次握手,A已进入ESTABLISHED状态)
B听到A的确认之后,也进入ESTABLISHED状态。
四次挥手过程?
A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(seq=u,FIN=1)。(第一次挥手,A进入FIN_WAIT_1)
B收到A的消息后说:确认,你要关闭连接了。(seq=v,ack=u+1,ACK=1)(第二次挥手,B进入CLOSE_WAIT)
A收到B的确认后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)
B说完了他要说的话(只是可能还有话说)之后,对A说,我要关闭连接了。(seq=w, ack=u+1,FIN=1,ACK=1)(第三次挥手)
A收到B要结束连接的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,然后A进入CLOSED)
B收到A的确认后,也进入CLOSED。
为什么需要三次握手?
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。
三次握手的另外一个目的就是通过发送特定的数据包,确认双方都支持TCP,告知对方用TCP传输。
为什么要四次挥手?
根本原因是,一方发送FIN只表示自己发完了所有要发的数据,但还允许对方继续把没发完的数据发过来。
与三次握手类似,通过发送特定的数据包,确认双方都支持TCP,告知对方用TCP传输。
4. 参考文章
互联网协议入门(一)
互联网协议入门(二)
TCP三次握手与四次挥手过程
简明理解三次握手和四次挥手
图解TCP通信三次握手和四次挥手
欢迎大家踊跃投稿。我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)。
未来的你一定会感激现在努力的自己!
以上是关于面试必备-计算机网络TCP/IP模型的主要内容,如果未能解决你的问题,请参考以下文章