網路協議及socket

2022-02-23 05:49:44 字數 2878 閱讀 5790

實體層:就是把電腦連線起來的物理手段。它主要規定了網路的一些電氣特性,作用是負責傳送0和1的電訊號。

分組方式: 乙太網協議  一組電訊號構成乙個資料報,叫做"幀"(frame)。每一幀分成兩個部分:標頭(head)和資料(data)

mac位址  乙太網資料報的"標頭",包含了傳送者和接受者的資訊 資料報必須是從一塊網絡卡,傳送到另一塊網絡卡。網絡卡的位址,就是資料報的傳送位址和接收位址,這叫做mac位址      arp協議 (address resolution protocol) 根據ip位址獲取實體地址的乙個tcp/ip協議()

廣播:接收然後對比自己的mac址和傳送的是否一樣

網路位址幫助我們確定計算機所在的子網路,mac位址則將資料報送到該子網路中的目標網絡卡。因此,從邏輯上可以推斷,必定是先處理網路位址,然後再處理mac位址。

ipv4:255.255.255.255  前24位 是網路位址, 後8位是主機位址 怎麼判斷是否處於同一子網路  與子網掩碼與運算(255.255.255.0) 然後比較結果是否相同(即網路段)

ip資料報  我們可以把ip資料報直接放進乙太網資料報的"資料"部分,因此完全不用修改乙太網的規格。這就是網際網路分層結構的好處:上層的變動完全不涉及下層的結構

arp協議 根據ip位址

獲取實體地址

的乙個tcp/ip協議 

每次在建立連線之前, 會在本地網路廣播傳送目的ip位址, 所有機器都會受到該請求, 目的機器發現該請求中的ip位址跟自己一樣, 就把自己的硬體位址返回回去, 否則忽略該請求。

一般來說, 每台機器都維護的有乙個arp快取表, 儲存了近期的ip位址和硬體位址的對映關係, 可以用arp -a命令來檢視快取表中內容。

如果目的機器和本機器不在同乙個網段之內的話, 會將資料傳送給閘道器來處理, 一般閘道器就是路由器, 此時閘道器會進行ip路由, 將arp請求傳送到目的網路位址, 然後再依次將應答返回給該發起請求的機器。

1.兩台主機不在同乙個子網路,那麼事實上沒有辦法得到對方的mac位址,只能把資料報傳送到兩個子網路連線處的"閘道器"(gateway),讓閘道器去處理

2.兩台主機在同乙個子網路,arp協議也是發出乙個資料報(包含在乙太網資料報中),其中包含它所要查詢主機的ip位址,在對方的mac位址這一欄,填的是ff:ff:ff:ff:ff:ff,表示這是乙個"廣播"位址。它所在子網路的主機,都會收到這個資料報,從中取出ip位址,與自身的ip位址進行比較。如果兩者相同,都做出回覆,向對方報告自己的mac位址(存入arp快取(ip位址-->mac位址的對應表)),否則就丟棄這個包cmd輸入 arp -a 就可以查詢本機快取的arp資料。

傳輸層:建立"埠到埠"的通訊" 網路層"的功能是建立"主機到主機"的通訊。只要確定主機和埠,我們就能實現程式之間的交流。因此,unix系統就把主機+埠,叫做"套接字"(socket)。有了它,就可以進行網路應用程式開發了

udp協議 : 須在資料報中加入埠資訊,這就需要新的協議。最簡單的實現叫做udp協議,它的格式幾乎就是在資料前面 標頭"部分主要定義了發出埠和接收埠,"資料"部分就是具體的內容   

tcp協議(有確認機制的udp協議):tcp資料報沒有長度限制

應用層:規定應用程式的資料格式

網路協議,也可簡稱協議,通常由三要素組成:

(1)語法:即資料與控制資訊的結構或格式;

(2)語義:即需要發出何種控制資訊,完成何種動作以及做出何種響應;

(3)時序(同步),即事件實現順序的詳細說明。

應用層 http

表示層:表示層協議規定對來自應用層的資料如何進行表達,例如採用什麼樣的文字編碼、是否及如何進行壓縮、是否及如何加密等

會話層:會話層用於建立和管理不同主機的兩個程序之間的對話

傳輸層(將來自高層的資料進行分段並將來自低層的資料重組,對資料傳輸進行差錯恢復和流量控制。通過對每個網路節點的多個程序進行標識)  tcp

網路層(網路層解決如何標識通訊各方和資料如何從源到達目的)  ip

最後的乙太網資料報

(2)後面的"ip標頭",設定發出方的ip位址和接收方的ip位址。這時,對於這兩者,本機都不知道。於是,發出方的ip位址就設為0.0.0.0,接收方的ip位址設為255.255.255.255。

(3)最後的"udp標頭",設定發出方的埠和接收方的埠。這一部分是dhcp協議規定好的,發出方是68埠,接收方是67埠。

這個資料報構造完成後,就可以發出了。乙太網是廣播傳送,同乙個子網路的每台計算機都收到了這個包。因為接收方的mac位址是ff-ff-ff-ff-ff-ff,看不出是發給誰的,所以每台收到這個包的計算機,還必須分析這個包的ip位址,才能確定是不是發給自己的。當看到發出方ip位址是0.0.0.0,接收方是255.255.255.255,於是dhcp伺服器知道"這個包是發給我的",而其他計算機就可以丟棄這個包。

接下來,dhcp伺服器讀出這個包的資料內容,分配好ip位址,傳送回去乙個"dhcp響應"資料報。這個響應包的結構也是類似的,乙太網標頭的mac位址是雙方的網絡卡位址,ip標頭的ip位址是dhcp伺服器的ip位址(發出方)和255.255.255.255(接收方),udp標頭的埠是67(發出方)和68(接收方),分配給請求端的ip位址和本網路的具體引數則包含在data部分。

新加入的計算機收到這個響應包,於是就知道了自己的ip位址、子網掩碼、閘道器位址、dns伺服器等等引數。

具體可察看

網路協議(二) Socket

socket是為了實現以上的通訊過程而建立成來的通訊管道,其真實的代表是客戶端和伺服器端的乙個通訊程序,雙方程序通過socket進行通訊,而通訊的規則採用指定的協議。socket只是一種連線模式,不是協議,socket是對tcp ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面 api ...

網路協議 傳輸層協議 Socket程式設計

套接字底層原理使用 tcp 或 udp 時,又會廣泛使用到 socket 套接字 api,socket 原本是由 bsd unix 開發的,但是後來被移植到 windows 的 winsock 以及嵌入式系統中。應用程式利用 socket,可以設定對端的 ip 位址 埠號,並實現資料的接收和傳送 下...

網路及網路協議

網路及網路協議 一 網路 1 通訊的基本概念 兩個物件之間通過某種介質,進行資訊的傳遞 2 訊號與通訊 訊號 將資料和訊號轉換成電子訊號,以電磁波的方式傳遞。寬頻 訊號可以看成是不同頻率電磁波的合成,我們可以把不同品廬的訊號合成在一起,得到乙個新的訊號 這個新訊號的頻譜,就是所組成的個頻率的組合。頻...