TCP/IP協議和socket


1.傳輸層基於tcp協議的三次握手和四次揮手?

傳輸層有兩種數據傳輸協議,分別為TCP協議和UDP協議,其中TCP協議為可靠傳輸,數據包沒有長度設置,理論可以無限長,而UDP協議為不可靠傳輸,報頭一共就8個字節。

Tcp的三次握手和四次揮手定義為:建立連接時三次握手完成建立連接,然后傳輸數據,斷開連接時是四次揮手。所以tcp傳輸數據是安全的。

 

 

 2. 為什么連接的時候是三次握手,關閉的時候卻是四次揮手?

因為當server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。

但是關閉連接時,當Server端收到FIN報文是,很可能並不會立即關閉SOCKET,所以只能先回復ACK報文,告訴Client端,"你發送的FIN報文我收到了。"

只有等我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。所以需要四次揮手。

3.什么是Socket?

原文鏈接:https://blog.csdn.net/github_34606293/article/details/78230456

原文鏈接:https://www.cnblogs.com/baxianhua/p/9285102.html

 

一下給出網絡上的幾種容易理解的解釋:

  1. 網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket端

 

 

2.TCP/IP只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作接口。
 TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口。

HTTP是轎車,提供了封裝或者顯示數據的具體形式;
Socket是發動,提供了網絡通信的能力。

3.socket是對TCP/IP協議的封裝,它的出現只是使得程序員更方便地使用TCP/IP協議棧而已。

socket本身並不是協議,它是應用層與TCP/IP協議族通信的中間軟件抽象層,是一組調用接口(TCP/IP網絡的API函數)

 

 4. 

      我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容。如果想要使傳輸的數據有意義,則必須使用到應用層協議。
  應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。
  WEB使用HTTP協議作應用層協議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協議將它發到網絡上。

建立網絡通信連接至少要一對端口號(socket)。socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。

Socket的英文原義是"孔"或"插座"。作為BSD UNIX的進程通信機制,取后一種意思。通常也稱作"套接字",用於描述IP地址和端口,是一個通信鏈的句柄,可以用來實現不同虛擬機或不同計算機之間的通信。在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,並綁定到一個端口上,不同的端口對應於不同的服務。

Socket正如其英文原意那樣,像一個多孔插座。一台主機猶如布滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟件將插頭插到不同編號的插座,就可以得到不同的服務。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM