官术网_书友最值得收藏!

4.1 Socket模塊文件

在長時間的教學工作中,作者發現學生們經常會將Socket當作TCP/IP協議族中的一員,但是又無法在TCP/IP協議層次圖中找到這個“協議”,因此會感到困惑。

實際上TCP/IP協議族將網絡分成鏈路層、網絡層、傳輸層和應用層。所熟知的IP、TCP和HTTP分別位于網絡層、傳輸層和應用層。這些層次和協議分別各司其職,各盡其能。而Socket并不是TCP/IP協議族中的協議,而是一個編程接口。有網絡程序編寫經歷的讀者,在編程中基本沒有寫過實現三次握手過程的代碼,這是為什么呢?TCP中最為典型的不就是三次握手嗎?

不錯,TCP的連接需要三次握手,但是這一點在TCP的內部已經實現了,當需要使用TCP的時候,只需要調用這個協議,無須再實現一次。其實TCP/IP和操作系統一樣,除了具體實現之外,同時也對外部提供調用的接口,這一點就像Windows操作系統中提供了win32編程接口一樣。Socket正是TCP/IP提供的外部接口。

也許有人要問,為什么不自己編程實現這些協議,而是調用別人寫好的接口呢?實際上無論是操作系統還是TCP/IP的代碼都不是一般的復雜,如果要實現,花費的時間和精力將會是非常驚人的,很可能窮盡一生也是很難完成的,而如果調用這些接口,幾行代碼就可以實現。

TPC/IP是傳輸層協議,主要解決數據如何在網絡中傳輸,而Socket是對TCP/IP的封裝和應用。TPC/IP是網絡中的規則,是不能修改的,而Socket則是給程序員使用的,是可以任意調用的。實際上,編程語言在處理網絡時都可以使用到Socket。Socket的英文原義是“孔”或“插座”,通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄,可以用來實現不同虛擬機或不同計算機之間的通信。網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,應用程序通常通過“套接字”向網絡發出請求或者應答網絡請求。

主站蜘蛛池模板: 胶南市| 杭锦旗| 建湖县| 海丰县| 贡觉县| 项城市| 阿拉善左旗| 镇沅| 黎川县| 石景山区| 邹城市| 太仓市| 漠河县| 旬邑县| 屏东市| 绥芬河市| 甘泉县| 彩票| 金坛市| 庐江县| 泰顺县| 奉化市| 宁阳县| 芜湖市| 漾濞| 元氏县| 瑞安市| 文成县| 商都县| 昭觉县| 松滋市| 华池县| 永靖县| 蕲春县| 灯塔市| 鹤山市| 太和县| 赫章县| 阿拉善左旗| 达孜县| 黑河市|