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請求來得到目的主機的硬件地址。緩存