——
——面試の基本功
又稱為套接字,它是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。
其實站在你的角度上看,socket就是乙個模組。我們通過呼叫模組中已經實現的方法建立兩個程序之間的連線和通訊。
也有人將socket說成ip+port,因為ip是用來標識網際網路中的一台主機的位置,而port是用來標識這台機器上的乙個應用程式。 所以我們只要確立了ip和port就能找到乙個應用程式,並且使用socket模組來與之通訊。
py裡的socket
起源?osi參考模型
目的:
各個層解決的問題:
網路層:
路線的分揀:
ip協議——解決路線
icmp(internet control message protocol)internet控制報文
傳輸(運輸)層:
udp——使用者資料報協議(user datagram protocol)
應用層:
http協議
——超文字傳輸協議:http://
目的:讓傳輸的所有資料有乙個統一標準,
http之80埠
url**位址
超文字傳輸協議 + web伺服器 + 伺服器 ( + 子目錄 + html檔名)
客戶請求訊息
header:
# host : localhost
>>
> 頭 : 內容
>方式(get) + 路徑 + 協議版本
空行 #>>>分離請求資料&請求體
get 沒有請求體——不需要傳資料過去 ,只需要獲取資源
post則相反
服務端響應
捕獲過濾器:
用於過濾捕獲的封包,以免捕獲太多記錄 [外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-mf6y1dhx-1569663188385)(g:\dddttt***\typora-user-images\1565600066191.png)]點+開啟[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-n1shbegg-1569663188386)(g:\dddttt***\typora-user-images\1565600808574.png)]
mac位址——每個電腦出場時的身份表識(物理網絡卡)
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-4ypemcdb-1569663188389)(g:\dddttt***\typora-user-images\1565425802945.png)]
字段:目的埠:預設加埠(80)
序號 & 確認序號
首部長度header length
——20位元組(最多60位元組)
緊急urg——優先順序(1為最高)
位碼即tcp標誌位:用於三次握手
flags——各種標誌位
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-bkyy9ugz-1569663188392)(g:\dddttt***\typora-user-images\1565837812460.png)]
復位位元(rst ——reset)—重置連線報文
ack(acknowledgement 確認)
其他標示:psh(push傳送) 、urg(urgent緊急)、sequence number(順序號碼) 、acknowledge number(確認號碼)
名詞積累:
肉雞
四次多餘
超時重傳
- server端——重傳syn
- client端——tcp不會為沒有資料的ack超時重傳
協議層面
c 由os隨機選取32位長的序列號,把isn(初始序列號)告訴s
s 確認收到c的同步訊號,判斷是否合法(900非法)【isn記錄(命名為ack)】
s 傳送syn和isn過去
c 確認收到s的同步訊號【isn記錄(命名為ack)】
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-sxrsldgj-1569663188397)(g:\dddttt***\typora-user-images\1565773646474.png)]
2和3可以同時傳輸,服務端傳送確認和請求訊號
揮手:
三大運營商,各有ip位址。
優勢:
backlog佇列
socket——cs程式設計(看812的**)
**部分解析:
我遇到的socket tcp ip問題
1.坑爹,居然由於客戶端太快,導致 客戶1的鏈結剛剛到 1處,客戶2的鏈結就立馬到了 1處,吧客戶1的connfd給覆蓋掉了。到處出現2個同樣的執行緒。尼瑪 int connfd accept server socket,struct sockaddr client addr,length 1 if...
ios實現基於socket tcp ip的通訊
asyncsocket的官方文件 使用方法如下 1 建立工程。2 把asyncsocket新增到專案中。3 新增cfnetwork.framework到工程中。4 實現測試類 import import asyncsocket.h inte ce iphone socketviewcontrolle...
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...