1. 程式人生 > >socket編程學習step2

socket編程學習step2

tcp/ip con lin 傳輸層協議 com connect images 三元 學習

引言:主機之間如何相互交互呢?網絡層的“ip地址”可以唯一標識網絡中的主機,而傳輸層的“協議+端口“可以唯一標識主機中的應用進程。這樣利用三元組(ip地址,協議,端口)就可以標識網絡的進程了,網絡中的進程就可以利用這個標誌與其他主機進行交互了。

什麽是TCP/IP、UDP?

1、TCP/IP(Transmission Control Protocol/Internet Protocol)即傳輸控制協議/網間協議,面向連接、保證高可靠性的傳輸層協議。

1)TCP/IP協議存在於OS中,網絡服務通過OS提供,在OS中增加支持TCP/IP的系統調用--套接字(Socket、connect、send等)

2)TCP/IP協議族包括運輸層、網絡層、鏈路層、而socket所在位置如圖,socket是應用層與TCP/IP協議族通信的中間軟件抽象層。

2、UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議,也是傳輸層協議,它是無連接的,不保證可靠的傳輸層協議。

技術分享

Socket是什麽?

1、socket套接字

socket起源於Unix,而Unix/Linux基本哲學是“一切皆文件”,都可以用“open->read/write->close“模式來操作。Socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀寫I/O、打開、關閉)。

說白了Socket是應用層與TCP/IP協議族通信的“中間軟件抽象層“,它是一組接口

2、socket描述符

套接字描述符其實就是一個整數,當應用程序要為因特網通信創建一個套接字(socket)時,操作系統就返回一個小整數作為描述符來標識這個套接字。從應用程序的角度看,文件描述符就是一個整數(也可以理解為指向文件的指針),可以用它來讀寫文件。

Socket通信流程圖

技術分享

建立一次連接經過三次握手:A請求數據--B應答數據--A再次確認。

終止一個連接經過四次握手:A主動關閉--B被動關閉--B主動關閉--A再次確認。

socket編程學習step2