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通信技術的基礎。