1.理解tcp
1.1 定址
首先任何基於tcp/ip的網路,每台機器都有唯一的ip位址,只需要知道接受者機器的ip位址,資訊就可以傳送過去。
其次,tcp通過使用埠號來知道機器究竟是哪個程式應該接收傳來過來的資料,每個程式都使用唯一乙個埠號,有時候這些埠號是事先知道的,有時候是隨機指定的。
再次,讓使用者記住一串諸如65.215.22.125的數字是非常困難的,於是使用了dns。當我們想要和乙個遠端機器建立連線的時候,就可以申請連線該機器ip位址相對應的dns,例如 www.baidu,.com dns會給我們提供乙個ip位址,接下來就可以建立連線了。
1.2 tcp的可靠性
1) 為了防止資料在傳輸的過程中被損壞,每個資訊包都包含乙個校驗碼。來保證傳輸過程中信心包沒有被更改。
2)為了防止資訊包丟失,tcp的重傳機制來保證。
3)為了防止資訊包重複或者順序錯誤,tcp每傳送乙個資訊包都會傳送乙個序號。接收方會檢查這個序號,確保收到該資訊包,並吧全部資訊包按照順序重新合併。同時如果接收方看到了乙個已經看過的序號,該資訊包就會被丟棄。
1.3 路由
為了保證資訊包可以從您的機器到達全球任何乙個地方,我們採用路由,並使用traceroutr來查詢經過的路由。
1.4 安全
不希望被陌生人看到你訪問的**或者傳輸的資料。
有可能您的鏈結會被攔截轉向另一台機器。
2.使用客戶/伺服器模式
2.1 伺服器端埠
在客戶/伺服器模式中,伺服器通常是偵聽乙個大家都知道的埠。國際網際網路位址分配委員會維護著官方已分配的埠列表。如果您編寫了乙個伺服器,它的服務不在這個列表,那麼就應該選擇乙個比1024大而且在您的機器上沒有被占用的埠號,埠號最大為65535。
2.1 客戶端埠號
客戶端埠號不是很重要,一般情況下是由作業系統隨機選擇乙個沒有被使用的埠號,當伺服器收到乙個連線請求的時候,請求中帶有客戶端的埠號,資料會被傳輸到該埠號上。因此伺服器可以喝客戶端挑選任意的埠號很好的工作。
2.3 理解udp
它被用來從乙個系統向其他系統傳送非常短的訊息,它只提供乙個保證:您收到的資料時完整的。
通常udp會用在客戶端向伺服器申請乙個位元的資訊,如果沒有收到答覆會繼續申請。
python網路程式設計基礎
客戶 伺服器架構 伺服器 是乙個軟體或硬體,用於提供客戶需要的 服務 伺服器存在的唯一目的就是等待客戶的請求,給這些客戶服務,然後再等待其他的請求.常見的服務型別 硬體的客戶 伺服器架構 印表機,檔案伺服器 軟體客戶 伺服器架構 web伺服器,資料庫伺服器,視窗伺服器 gui 套接字 用於程序間通訊...
python 網路程式設計基礎
python實在是太方便,太易用了,三方庫的支援又全,語法又簡單,對開發人員來說,實在是居家旅行,x的必備利器。週末研究了下python的網路支援,做一下記錄,以備隨後翻閱。python支援bsd的socket進行網路程式設計,其api跟c中的大同小異,先看看tcp方式的,說到網路程式設計,肯定會設...
python網路程式設計基礎
目錄 標籤 空格分隔 網路程式設計 目錄tcp和udp tcp的使用是面向連線的,即資料的傳輸必須基於虛鏈路的完整建立。虛鏈路的建立提供了很多優秀的功能,比如確認重傳以保證資料的完整性,滑動視窗以保證資料傳輸的高效性,各類選項字段提供不同的可選功能。tcp的缺點是報頭大,因為需要包含比udp更多的功...