網絡編程——socket編程
一、C/S架構介紹 |
C/S架構 C:clint(客戶端軟件)
S:server(服務端軟件)
python程序員是應用開發程序員,開發的軟件都是應用軟件,應用軟件必須運行於操作系統之上,操作系統則運行於硬件上,應用軟件不能直接操作硬件,應用軟件對硬件的操作必須調用操作系統接口,由操作系統操作硬件。
客戶端軟件基於網絡發送消息給服務端軟件流程:
1、客戶端軟件產生數據,存放於客戶端軟件的內存中,然後調用接口將自己內存中的數據發送/拷貝給操作系統內存
2、客戶端操作系統收到數據後,按照客戶端軟件指定的協議、調用網卡發送數據
3、網絡傳輸數據
4、服務端軟件調用系統接口,想要將數據從操作系統內存拷貝到自己的內存中
5、服務端操作系統受到4的指令後,使用與客戶端相同的協議,從網卡接收到數據,然後拷貝給服務端軟件
假設我現在要寫一個程序,給另一臺計算機發數據,必須通過tcp/ip協議 ,但具體的實現過程是什麽呢?我應該怎麽操作才能把數據封裝成tcp/ip的包,又執行什麽指令才能把數據發到對端機器上呢?
簡而言之,socket這個東東幹的事情,就是幫你把tcp/ip協議層的各種數據封裝啦、數據發送、接收等通過代碼已經給你封裝好了,你只需要調用幾行代碼,就可以給別的機器發消息了。
二、計算機網絡 |
計算機之間的通信首先要有物理鏈接介質,比如網線,交換機,路由器等網絡設備。
通信的線路建好之後,只是物理層面有了可以承載數據的介質,要想通信,還需要我們按照某種規則組織我們的數據,這樣對方在接收到數據後就可以按照相同的規則去解析出數據。
三、TCP/IP |
按照功能不同,人們將互聯網協議分為osi七層或tcp/ip五層或tcp/ip四層。
http://www.cnblogs.com/linhaifeng/articles/5937962.html#_label5
TCP/IP五層:
1、應用層:規定應用程序的數據格式。
2、傳輸層:建立端口到端口的通信
3、網絡層:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址
4、數據鏈路層:定義了電信號的分組方式
5、物理層:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0
網絡編程——socket編程