天天看點

TCPIP協定詳解【一】

作者:運維法拉令

協定分層:

TCPIP協定詳解【一】

TCP/IP在資料包設計上采用封裝和分用的政策,所謂封裝就是在應用程式在發送資料的過程中,每一層都增加一些首部資訊,這些資訊用于和接收端同層次進行溝通,例如當資料從應用程式發送到以太網過程中資料逐層加工的示意圖如下所示:

TCPIP協定詳解【一】

1.應用層

應用層做為 TCP/IP 協定的最高層級,對于我們移動開發來說,是接觸最多的。

運作在TCP協定上的協定:

HTTP(Hypertext Transfer Protocol,超文本傳輸協定),主要用于普通浏覽。

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協定),HTTP協定的安全版本。

FTP(File Transfer Protocol,檔案傳輸協定),由名知義,用于檔案傳輸。

POP3(Post Office Protocol, version 3,郵局協定),收郵件用。

SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協定),用來發送電子郵件。

TELNET(Teletype over the Network,網絡電傳),通過一個終端(terminal)登陸到網絡。

SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陸用。

運作在UDP協定上的協定:

BOOTP(Boot Protocol,啟動協定),應用于無盤裝置。

NTP(Network Time Protocol,網絡時間協定),用于網絡同步。

DHCP(Dynamic Host Configuration Protocol,動态主機配置協定),動态配置IP位址。

其他:

DNS(Domain Name Service,域名服務),用于完成位址查找,郵件轉發等工作(運作在TCP和UDP協定上)。

ECHO(Echo Protocol,回繞協定),用于查錯及測量應答時間(運作在TCP和UDP協定上)。

SNMP(Simple Network Management Protocol,簡單網絡管理協定),用于網絡資訊的收集和網絡管理。

ARP(Address Resolution Protocol,位址解析協定),用于動态解析以太網硬體的位址。

2.傳輸層

傳輸層提供了兩種到達目标網絡的方式:

(1)使用者資料報協定UDP:

隻提供了基本的錯誤檢測,是一個無連接配接的協定。

特點:把資料打包,資料大小有限制(64k),不建立連接配接,速度快,但可靠性低。

(2)傳輸控制協定TCP:

提供了完善的錯誤控制和流量控制,能夠確定資料正常傳輸,是一個面向連接配接的協定。

特點:建立連接配接通道,資料大小無限制速度慢,但是可靠性高。由于傳輸層涉及的東西比較多,比如端口,Socket等。

TCP三向交握

TCPIP協定詳解【一】

第一次握手:Client将标志位SYN置為1,随機産生一個值seq=J,并将該資料包發送給Server,Client進入SYN_SENT狀态,等待Server确認。

第二次握手:Server收到資料包後由标志位SYN=1知道Client請求建立連接配接,Server将标志位SYN和ACK都置為1,ack=J+1,随機産生一個值seq=K,并将該資料包發送給Client以确認連接配接請求,Server進入SYN_RCVD狀态。

第三次握手:Client收到确認後,檢查ack是否為J+1,ACK是否為1,如果正确則将标志位ACK置為1,ack=K+1,并将該資料包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正确則連接配接建立成功,Client和Server進入ESTABLISHED狀态,完成三次握手,随後Client與Server之間可以開始傳輸資料了。

簡單來說,就是:

1):建立連接配接時,用戶端發送SYN包(SYN=i)到伺服器,并進入到SYN-SEND狀态,等待伺服器确認。

2):伺服器收到SYN包,必須确認客戶的SYN(ack=i+1),同時自己也發送一個SYN包(SYN=k),即SYN+ACK包,此時伺服器進入SYN-RECV狀态。

3):用戶端收到伺服器的SYN+ACK包,向伺服器發送确認報ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀态,完成三次握手,用戶端與伺服器開始傳送資料。