1. 程式人生 > 實用技巧 >網路程式設計知識總結

網路程式設計知識總結

網路基礎

TCP/IP參考模型

wKiom1digsPT4wrdAABAFY2t4eo583.png

TCP/IP協議簇:分層的多協議的通訊體系,是一個四層協議系統


網路介面層

ARP:IP——>MAC地址

RAPR:MAC——>IP

資料鏈路層(驅動程式)封裝了物理網路的電氣細節

網際層選擇中間節點

IP:

ICMP:檢測網路連線 (它使用IP提供的服務)

wKioL1diiP3zqAyvAABLhnQOH08444.png


WAN(廣域網)使用眾多分級的路由器來連線分散的主機或LAN

網路層封裝了網路連線的細節

傳輸層

TCP

UDP

SCTP(流控制傳輸協議)

傳輸層為應用程式提供了一條端到端的邏輯通訊鏈路

應用層

Ping:是應用程式,不是協議,是除錯網路環境的工具

telent:遠端登陸協議,能使我們本地完成遠端任務

OSPF:開放最短路徑優先協議,是一種動態路由更新協議,用於路由器間的通訊,已告知對方各自的路由資訊

TCP

封裝過程如下圖:

wKioL1diizLwfkszAAA2Andn1yE673.png

IP、ARP、RARP:三種協議都使用幀傳輸資料(IP 0x800 ARP 0x806 RARP 0x835)

TCP、UDP、ICMP:都使用IP協議(IP的頭部採用16位的協議欄位來區分它們)

DNS、HTTP等應用層協議:通過TCP、UDP提供服務(TCP、IP頭部中的16位埠號欄位區分上層應用)

(DNS 53 HTTP 80)

ARP/RARP

wKiom1dijaexKVsWAAAxKnal3gQ259.png

ARP快取記憶體:IP地址到MAC地址的對映

arp命令

$sudo arp -d IP地址 #刪除IP對應的ARP快取

$sudo arp -s IP地址 實體地址 #新增...

乙太網幀

wKioL1dikD2yvjmtAAAXaiWPirY385.png

ARP請求和應答是從乙太網驅動程式發出的,而並非從ARP模組直接傳送到乙太網上的

DNS查詢和應答報文


套接字程式設計

位元組序

PC大多數是用小端位元組序,又稱主機位元組序

大端位元組序,又稱網路位元組序

socket地址的資料型別

通用socket地址(之根本)

struct sockaddr{

};

專用socket地址(更細)

TCP IPV4

struct sockaddr_in{

};

unix udp

struct sockaddr_un{

};

所有專用socket地址型別de變數在實際使用都需要轉化為通用socketaddr

因為所有的socket程式設計介面都是用的地址引數型別都是sockaddr


地址族與協議族有完全相同的值,因此二者通常混用

wKioL1dik5SwAs9mAACLs7Ch7zQ696.png

setsockopt函式

解決server的TCP連線沒有完全斷開之前不允許重新監聽的問題

http://www.cnblogs.com/eeexu123/p/5275783.html



高階IO

pipe/socketpair

pipe用來建立管道,但是單個管道只能單向通訊,一端用於讀,而另一端用於寫。如果要實

現程序雙向通訊,必須建立一對管道。而socketpair則可以用來建立雙向通訊的管道

dup/dup2

對輸入檔案描述符重定向,

select

poll

epoll




《完》

轉載於:https://blog.51cto.com/lingdandan/1790043