關于TCP UDP IP SOCKET的總結

OSI七層模型

它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。每一層的功能是獨立的。它利用其下一層提供的服務并為其上一層提供服務,而與其他層的具體實現無關。這里所謂的“服務”就是下一層向上一層提供的通信功能和層之間的會話規定,一般用通信原語實現。兩個開放系統中的同等層之間的通信規則和約定稱之為協議。通常把1~4層協議稱為下層協議,5~7層協議稱為上層協議。

傳輸層:定義了一些傳輸數據的協議和端口號(如HTTP的端口80等),TCP(傳輸控制協議,傳輸效率低,可靠性強,可以用于傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的)。 主要是從下層接收的數據進行分段和傳輸,到達目的地址后再進行重組。常常把這一層數據叫做報文段。

會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(設備之間需要互相認識可以是IP也可以是MAC或者是主機名)


傳輸層協議和傳輸協議一樣嗎?

答:傳輸層(TransportLayer)是OSI中最重要,答:最關鍵的一層,是唯一負責總體的數據傳輸和數據控制的一層.傳輸層提供端到端的交換數據的機制,檢查分組編號與次序。傳輸層對其上三層如會話層等,提供可靠的傳輸服務,對網絡層提供可靠的目的地站點信息.

傳輸控制協議(TCP)(重點了解)

TCP工作原理 :TCP的連接建立過程又稱為TCP三次握手。

首先客戶端向服務器發起一個建立連接的同步(SYN)請求;

服務器在收到這個請求后向客戶端回復一個同步/確認(SYN/ACK)應答;

客戶端收到此應答確認之后再向服務器發送一個確認(ACK),,此時TCP連接成功建立.

一旦初始的三次握手完成,在發送和接收主機之間將按順序發送和確認數據段,數據傳輸完成之后,關閉連接之前,TCP使用類似的握手過程驗證兩個主機是否都完成發送和接收全部數據。

它可以提供可靠的、面向連接的網絡數據傳遞服務。傳輸控制協議主要包含下列任務和功能。

用戶數據報協議(UDP)(重點了解)

UDP全稱是User Datagr2am Protocol,中文名為用戶數據報協議。UDP 提供無連接的網絡服務,該服務對消息中傳輸的數據提供不可靠的、最大努力傳送。這意味著它不保證數據報的到達,也不保證所傳送數據包的順序是否正確。 同學們也許會問:“既然UDP是一種不可靠的網絡協議,那么還有這種協議的出現是為什么呢?”其實在有些情況下UDP可能會變得非常有用。因為UDP具有效率優勢。雖然TCP中植入了各種安全保障功能,正因為有安全你的保障,所以對效率的保障就會很低,在實際執行的過程中會占用大量的系統開銷,無疑效率受到嚴重的影響。反觀UDP由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大地降低了執行時間,使效率得到了保證。

UDP(User Datagram Protocol)用戶數據報協議   它是定義用來在互連網絡環境中提供包交換的計算機通信的協議, 此協議默認認為網路協議(IP)是其下層協議。 UDP是TCP的另外一種方法,象TCP一樣,UDP使用IP協議來獲得數據單元(叫做數據報),不象TCP的是, 它不提供包(數據報)的分組和組裝服務。 而且,它還不提供對包的排序,這意味著,程序程序必須自己確定信息是否完全地正確地到達目的地。 如果網絡程序要加快處理速度,那使用UPD就比TCP要好。 UDP提供兩種不由IP層提供的服務,它提供端口號來區別不同用戶的請求,而且可以提供奇偶校驗。 在OSI模式中,UDP和TCP一樣處于第四層,傳輸層。HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議   它是由Netscape開發并內置于其瀏覽器中,用于對數據進行壓縮和解壓操作, 并返回網絡上傳送回的結果。?

HTTPS實際上應用了Netscape的完全套接字層(SSL)作為HTTP應用層的子層。 (HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。) SSL使用40 位關鍵字作為RC4流加密算法,這對于商業信息的加密是合適的。 HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。

Socket(重點)

Socket原意為插座,意譯為套接字

本地上的兩個進程如何通信?

內存共享

消息隊列

管道 NSPipe NSTask

RPC remote protocol control

本地Socket

網絡上的兩個進程如何通信?

本地進程間通信(IPC)通過PID可以唯一確定彼此,然后通過共享內存,消息隊列等來通信。

網絡上的兩個進程確定彼此需要IP與端口號,通過傳輸層(TCP/UDP)協議進行通信 socket的特點—>在TCP/UDP 加一個端口綁定

由于端口號是被進程獨占,因此socket通信經常與進程通信畫上等號

假設電腦是一個大插座,有不同的插座型號,socket就是遍布在上面的插孔,可以為不同的插頭提供服務 這個比喻不恰當的地方是一個插孔可以讓多個插頭插進來 反過來 上述比喻中,服務端進程即為服務本身,區別一臺主機的不同服務則是通過端口來區分 因此只要是在這個特定的端口建立起來的TCP/IP連接就應該通往對應的進程 所以唯一確定這個socket的前提是找到這個插板(主機IP),找到這個插孔(端口) Socket通信就是一種確定了端口號的TCP/IP通信 上面那句話寫成這樣也要認識: Socket通信與IP通信差別就是端口確定,協議確定

端口的打開是雙方的,很多人在C/S結構的TCP連接中只注意到S的端口(監聽的),實際上C也開了一個端口,而C端的端口是動態端口,TCP連接建立的時候,C端的端口會在三次握手結束后確定,動態打開一個,這個端口不受用戶/程序員的控制

服務端socket通信步驟

提供一些服務

將這個服務與自己的IP地址、端口綁定

監聽任何到這個IP+端口的TCP請求

接受/拒絕 建立這個TCP連接

讀寫 數據

斷開TCP連接

BSD提供了一套底層API來處理這些過程

目前基本上互聯網的所有服務都基于socketAPI,所以socket通信技術的基礎。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.1 TCP/IP協議組 TCP/IP協議(傳輸控制協議)由網絡層的IP協議和傳輸層的TCP協議組成 IP層負責...
    F麥子閱讀 2,837評論 0 25
  • 個人認為,Goodboy1881先生的TCP /IP 協議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,096評論 0 8
  • 1.這篇文章不是本人原創的,只是個人為了對這部分知識做一個整理和系統的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,137評論 6 174
  • 名詞延伸 通俗的說,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,646評論 2 56
  • 網絡概念第一天 兩臺電腦怎么通過網絡傳輸數據?怎樣才能知道傳輸的是數據?誰摸過網線? 看電影,怎么看的?通過電流,...
    小吖朱閱讀 1,593評論 0 1