1. 程式人生 > >http tcp udp ip 間的關係

http tcp udp ip 間的關係

首先,我自己梳理一下,其實除了應對以後的筆試,還有需要應對的是自己在程式設計中對於api的選擇,我在滿足需求時採取哪種方案更好。

首先,我需要了解的是tcp/ip是一個協議組,有三大層:

ip 對應於網路層
tcp 和 udp 對應於傳輸層

http 對應於應用層 

 socket 屬於api ,是對tcp/ip的封裝。

其中,應用層存在的意義是使tcp/ip傳輸過來的資料內容能夠識別出來。

通過socket 我們才能使用tcp/ip協議



CSDN上有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網路通訊的能力。

(從百度摘錄)

問題1:tcp 有哪三次握手?然後結束時需要握手不?

第一次:客戶端向服務的傳送SYN包,等待服務端確認;

第二次:服務端收到客戶端的SYN包,確認客戶端的syn(ack=j+1),向客戶端傳送確認包ACK(ack=k),即syn+ack包,傳送完畢後,服務端進入SYN_RECV狀態

第三次:客戶端收到服務端的syn+ack包,向服務端傳送確認包ack(ack=k+1),傳送完畢後,雙方進入establish狀態,完成三次握手。

問題2:利用socket建立的網路連線步驟

socket 連結至少需要一套套接字,其中客戶端的是client socket ,服務端的是server socket 。套接字之間連線過程,三個步驟:伺服器監聽,客戶端請求,連線確認。
1.伺服器監聽:服務端套接字處於等待連線狀態,實時監控網路,等待客戶端傳送請求。

2.客戶端請求:客戶端套接字提出請求,要連線服務端的套接字。客戶端套接字需要指出服務端套接字的ip和埠,向服務端發出請求。

3.連線確認:當服務端套接字接收到客戶端套接字,響應客戶端套接字的要求,建立一個執行緒,把服務端套接字的描述傳送給客戶端。一旦客戶端確認此描述,雙方建立連線。

問題3:http連結的特點

http 是超文字傳輸協議,最顯著特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,主動釋放連線。
問題4:tcp和udp的區別?

tcp是面向連結,三次握手是為了保持連線性。

udp是非面相連結,就是傳送時不需要和對方建立連線,也不需要理會對方是否接收。

udp傳送的資料內容,使用者是可以進行驗證的。