- Python滲透測試編程技術:方法與實踐(第2版)
- 李華峰
- 688字
- 2022-07-29 14:38:31
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地址和端口,是一個通信鏈的句柄,可以用來實現不同虛擬機或不同計算機之間的通信。網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,應用程序通常通過“套接字”向網絡發出請求或者應答網絡請求。
- Go Web編程
- Deploying Node.js
- Java Web開發學習手冊
- Mastering JavaScript Object-Oriented Programming
- 兩周自制腳本語言
- 新手學Visual C# 2008程序設計
- Functional Programming in JavaScript
- R的極客理想:工具篇
- Scala程序員面試算法寶典
- Visual C++開發入行真功夫
- Java面向對象程序設計
- HTML5+CSS3 Web前端開發技術(第2版)
- Hands-On Nuxt.js Web Development
- C語言程序設計
- Elastix Unified Communications Server Cookbook