socket收發訊息底層原理

2021-10-07 22:56:03 字數 745 閱讀 8858

服務端和客戶端想要通訊,底層需要internet物理連線,網絡卡配備有ip位址和mac位址,網絡卡收發的訊息是位元組流。服務端程式和客戶端程式工作中應用層,服務端程式要想發包,必須一層一層往下走,走到網絡卡那一層,將資料轉化成二進位制才能送到客戶端 ,客戶端網絡卡收到包,一層一層往上送,然後客戶端程式才能接收到資料。客戶端發包服務端接收也是如此。

記憶體分為使用者態和核心態。簡單來說,核心態記憶體是作業系統執行時核心**占用的記憶體;使用者態是使用者程式執行時占用的記憶體。兩者不能混在一起,作業系統的乙個目的是操作底層硬體,如果能混在一起,沒有使用者態和核心態之分,意味著應用程式就能夠直接操作底層硬體 ,便沒有許可權劃分一說,那便不需要作業系統。應用軟體想要操作硬體必須通過作業系統發起請求

socket程式要想把資料發出去,需通過底層網絡卡,意味著應用程式要操作底層硬體,必須通過作業系統,因此socket應用程式收發訊息都是通過核心態記憶體

發資料時,資料從使用者態記憶體傳送到核心態記憶體,傳送到核心態中的資料由作業系統接收,作業系統再操作網絡卡把資料轉化成二進位制,然後傳送到對端。發到對端以後,由對端的網絡卡接收,然後交給對端的作業系統,相當於交給了核心態記憶體,然後使用者態的socket應用程式再從核心態中取。

socket實現UDP收發訊息

import socket while true 建立udp套接字 udp socket socket.socket socket.af inet,socket.sock dgram 設定接收方的位址和埠 根據具體情況更改 dest addr 255.255.255.255 8080 從鍵盤輸入資料...

Mbed OS CAN匯流排收發訊息

can controller area network 是博世公司發明的。是乙個多主訊息廣播系統,最高速率可達1mbps,和傳統的usb,乙太網介面不同。can 不能點對點傳送大資料塊。只能以廣播方式傳送短訊息 8個位元組 和ethernet類似,can採取 csma cd匯流排通訊方式。can已經...

python使用kafka收發訊息

kafka是最近幾年很流行的訊息佇列中介軟體。在大資料以及後端服務領域有很廣泛的應用。廢話不多說,接下來直接上 介紹python如何向kafka傳送資料以及訂閱資料。kafka的訊息是 發布 訂閱 模式的。接下來先介紹向kakfa發布訊息。先安裝python的kafka連線模組。pip instal...