網路程式設計知識總結
網路基礎
TCP/IP參考模型
TCP/IP協議簇:分層的多協議的通訊體系,是一個四層協議系統
網路介面層
ARP:IP——>MAC地址
RAPR:MAC——>IP
資料鏈路層(驅動程式)封裝了物理網路的電氣細節
網際層選擇中間節點
IP:
ICMP:檢測網路連線 (它使用IP提供的服務)
WAN(廣域網)使用眾多分級的路由器來連線分散的主機或LAN
網路層封裝了網路連線的細節
傳輸層
TCP
UDP
SCTP(流控制傳輸協議)
傳輸層為應用程式提供了一條端到端的邏輯通訊鏈路
應用層
Ping:是應用程式,不是協議,是除錯網路環境的工具
telent:遠端登陸協議,能使我們本地完成遠端任務
OSPF:開放最短路徑優先協議,是一種動態路由更新協議,用於路由器間的通訊,已告知對方各自的路由資訊
TCP
封裝過程如下圖:
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
ARP快取記憶體:IP地址到MAC地址的對映
arp命令
$sudo arp -d IP地址 #刪除IP對應的ARP快取
$sudo arp -s IP地址 實體地址 #新增...
乙太網幀
ARP請求和應答是從乙太網驅動程式發出的,而並非從ARP模組直接傳送到乙太網上的
DNS查詢和應答報文
套接字程式設計
位元組序
PC大多數是用小端位元組序,又稱主機位元組序
大端位元組序,又稱網路位元組序
socket地址的資料型別
通用socket地址(之根本)
struct sockaddr{
};
專用socket地址(更細)
TCP IPV4
struct sockaddr_in{
};
unix udp
struct sockaddr_un{
};
所有專用socket地址型別de變數在實際使用都需要轉化為通用socketaddr
因為所有的socket程式設計介面都是用的地址引數型別都是sockaddr
地址族與協議族有完全相同的值,因此二者通常混用
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