1.概念
計算機與計算機之間通過網路實現通訊時事先達成的一種約定。兩台計算機只要遵循相同的協議就能夠實現通訊。網路也屬於程序間通訊,公共資源是網路,其本質是兩個程序通過網路進行收發資料。
2.多任務排程
作業系統採用cpu時間片輪轉機制,在多個程式間進行切換,合理排程,從而相當於使多個程式同時執行。
3.osi模型
iso制定了乙個國際標準osi。共分為了7層,使得複雜的網路協議變得更加簡單化。
應用層:針對特定應用的協議 表示層 會話層 傳輸層:管理兩個節點之間的傳輸,負責可靠傳輸。 網路層:位址管理與路由選擇,經過哪個路由傳遞到目標位址? 資料鏈路層:互連裝置之間傳送和識別資料幀 物理層:線路傳輸
4.位址
1)在同乙個通訊網路中,通訊主體位址具有唯一性、層次性(中國陝西),但mac位址不具有層次性。ip位址具有層次性。
2)mac位址:由裝置的製造廠商針對每塊網絡卡進行分別指定。mac位址一般會燒入到rom中。是資料鏈路的位址,識別同一鏈路中不同的計算機。
5.半雙工
只傳送或只接收的通訊方式。
6.全雙工
同一時間既可以發資料也可以接收資料,例如打**。
7.vpn
虛擬專用網路,用於連線距離較遠的地域。就可以瀏覽外網了。翻牆(梯子)。
8.socket
使用tcp或udp進行通訊時,會使用到套接字(socket)的api(應用程式設計介面)。
socket=ip+埠號。
9.埠號
1)用來識別同一臺計算機中進行通訊的不同應用程式。
2)網路任務程序才有埠號。
3)是傳輸層協議的內容。
4)乙個埠號只能被乙個程序占用。
5)乙個程序可以被多個埠號繫結,乙個埠號不能被多個程序繫結。收資料時不知道給哪個程序傳送。
6)識別乙個通訊:「源ip位址」、「目標ip位址」、「協議號」、「源埠號」、「目的埠號」。
可以使用netstat -n -t進行參看。
7)埠號分為知名埠號(0~1023)和作業系統動態分配的埠號。我們自己寫程式時,應該避開這些知名埠號。
cat /etc/services //可以檢視知名埠號
8.netstat檢視網路狀態的工具。
n:拒絕顯示名字,能顯示數字的全部轉換為數字
l:僅列出有在監聽的服務狀態
p:顯示建立相關鏈結的程式名
t:僅顯示tcp相關選項
u:僅顯示udp相關選項
9.檢視伺服器的程序idpidof 程序名
1.網絡卡
使計算機聯網的裝置,一台計算機想連線網路,必須有網絡卡(網路介面卡、網路介面卡)。網絡卡有時會被整合到計算機的主機板中,或者也可以單獨插入擴充套件槽使用。
2.中繼器
物理層上的延長網路的裝置,對減弱的訊號進行放大和傳送的裝置。
3.路由器
是連線網路和網路的裝置。可以將分組報文傳送給另乙個目標路由器位址。工作在網路層。連線兩個乙太網。
4.交換機
可以將區域網的網路碰撞減少。工作在資料鏈路層。用於互連相同型別的區域網。
1.arpanet
是全球網際網路的鼻祖。
2.tcp/ip於2023年誕生。
tcp/ip是利用ip進行通訊時所必須用到的協議群的統稱。
3.rfc(徵求意見表)
4.資料報
段:tcp資料流中的資訊。
資料報:ip和udp中的單位
幀:資料鏈路層中包的單位。
5.應用層
ssh、http、smtp、pop、ftp、html、dns(基於udp協議)、tftp(基於udp的簡單檔案傳輸協議)。
6.傳輸層
udp、tcp、
7.網路層
arp、ipv4、ipv6、
8.資料鏈路層
ppp1.特點
無連線、不可靠、面向資料報的一種協議。udp沒有真正意義的傳送緩衝區。udp具有接收緩衝區,但這個緩衝區不保證資料報的順序,當接收緩衝區滿了,在到達的資料報就會被丟棄。
2.udp首部
3.udp使用注意事項
udp協議首部中,有16的最大長度,也就是udp能傳輸的最大長度是64k(2的16次方),但我們可以在應用層手動的分包,多次傳送,並在接收端手動拼裝。
udp可以隨時傳送資料。
1.特點
面向連線、面向位元組流、可靠的資料段、屬於全雙工。其作用是對資料的傳輸進行乙個詳細的控制。tcp通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。
2.tcp首部
序列號
是指傳送資料的位置。
確認序號
指下一次應該收到的資料的序列號。說明已收到確認序號之前一位為止的資料。當傳送端收到這個確認序號時,就可以確認這個序號以前的資料都被正常接收。
4位首部長度
也叫資料偏移,表示tcp所傳輸的資料部分應該從tcp包的哪個位開始計算,相當於表示該tcp頭部有多少個32位bit(單位為4個位元組)。
①所以tcp頭部最大長度=(8+4+2+1)*4=60個位元組。
②如果tcp首部長20位元組,那麼4位首部長度可以設定為5,意味著tcp的首部是最一開始到20個位元組處,餘下為tcp資料。
保留
以後擴充套件時用。
6位控制位
urg:緊急指標是否有效。
ack:確認序號是否有效。
psh:使接收端應用程式立刻從tcp緩衝區中讀走。
rst:連線出現異常必須強制斷開連線,對方請求重新建立連線。攜帶此標識稱為復位報文段。
syn:請求建立連線,攜帶此標識稱為同步報文段。
fin:以後不再有資料傳送,希望斷開連線。
視窗大小
相當於接收方的緩衝區大小。
tcp不允許傳送超過此視窗大小的資料。
如果視窗為0,則表示可以傳送視窗探測,了解最新視窗大小。但這個資料必須是乙個位元組。
校驗和
tcp的校驗和無法關閉。
緊急指標
只有在urg控制位為1時有效。該欄位數值表示本報文段緊急資料的指標。
選項
其長度是可變的,最大長度為40個位元組。該欄位用於提高tcp的傳輸效能。
16位視窗大小一次往返時間最大只能傳送64k,但使用了該選項,就可以提公升至1個g。
簡單的文字協議 二進位制協議
寫網路程式躲不過協議,協議其實就是定義了訊息的格式,以及訊息是如何交換的。協議可簡單可複雜,複雜精密如tcp協議,簡單奔放如http的協議。這裡將我所接觸到的協議稍微總結一下,最後丟擲乙個個人設計的簡單通用的文字協議。設計乙個協議不是一件很容易的事情,尤其是當對設計的要求包含很好的描述性和可擴充套件...
C 串列埠通訊 文字協議資料解析
文字方式的資料比較容易分析。如果資料快取,可以考慮用stringbuilder。或是不快取也可以。文字格式資料大多有換行結尾。稍微修改即可。例如分析常見的nmea 0183格式的衛星座標資料gga。gpgga,121252.000,3937.3032,n,11611.6046,e,1,05,2.0,...
文字協議與二進位制協議的選擇
進行網路通訊時,我們經常糾結於到底使用什麼樣的協議傳輸資料,下面我談談應該怎麼選擇一種合理的協議格式。標準定義是這樣的 為計算機網路中進行資料交換而建立的規則 標準或約定的集合。網路協議至少包括三要素 語法 語法是使用者資料與控制資訊的結構與格式,以及資料出現的順序。語義 解釋控制資訊每個部分的意義...