ipc

  1     進程間通訊
  2 
  3 本地
  4     有親緣關係的進程
  5     管道:
  6         特色:
  7             必需要湊齊讀寫雙方
  8         命名管道(沒有親緣關係的進程也能夠進程通訊)
  9             man 7 fifo    
 10             mkfifo(3);
 11         匿名管道
 12             man 7 pipe
 13             pipe(2);    
 14 
 15     能夠用於沒有親緣關係的進程
 16     sysV IPC(XSI)
 17     
 18     ipcs
 19 
 20     第一步
 21         獲取同一個key值    ftok();
 22     第二步
 23         經過同一個key值獲得同一個實例 xxxget();
 24     第三步
 25         進行通訊xxxop();
 26     第四步
 27         銷燬實例 xxxctl();
 28 
 29     消息隊列    
 30     共享內存
 31     信號量數組
 32         
 33 mmap(2);
 34 
 35 網絡
 36     ip地址
 37         點分十進制----》整型
 38         inet_pton();
 39 
 40     端口
 41         標識惟一進程
 42         周知端口:01024
 43         用戶定義:1024 44 
 45     七層網絡模型
 46     物理層 數據鏈路層 網絡層 傳輸層 會話層 表示層 應用層
 47 
 48     四層網絡模型(tcp/ip)    
 49     鏈路層    網絡層    傳輸層    應用層
 50     
 51 跨主機傳輸面臨的問題:
 52     1.數據類型字節個數差異
 53     <stdint.h>
 54         int32_t
 55         int64_t
 56     2.字節序
 57         大端存儲
 58         小端存儲    
 59         本地字節序---》網絡字節數
 60                 htons();
 61                 htonl();
 62         網絡----》本地
 63                 ntohs();
 64                 ntohl();
 65     3.結構體對齊
 66         struct {
 67 
 68         }__attribute__((packed));        
 69 
 70 ipv4地址的劃分
 71     ip地址=網絡號+主機號
 72     A        1byte+3byte    
 73             0開頭
 74             0.0.0.0 ~ 127.255.255.255
 75             0.0.0.0---->任意地址
 76             127.0.0.1--->迴環測試地址
 77         子網掩碼
 78             255.0.0.0
 79     B        2byte+2byte    
 80             10開頭
 81             128~192
 82         子網掩碼
 83             255.255.0.0
 84     C        3byte+1byte    
 85             110開頭
 86             192~223
 87         子網掩碼
 88             255.255.255.0
 89     D        組播地址
 90             1110
 91             224~239    
 92     E        保留
 93 
 94     
 95 man 7 socket
 96 man 7 ip
 97 man 7 tcp
 98 man 7 udp
 99 man 7 unix
100 
101 主動端
102     先發包的一端
103 
104 被動端
105     先收包的一端
106 
107 1.socket
108     抽象層
109 
110 2.報式套接字
111     端對端 無鏈接,不可靠
112     主動端                    被動端
113     socket()                socket()
114     //bind()可省            bind()
115     sendto();/recvfrom()        recvfrom()/sendto();
116     close();                close();
117 
118 廣播:
119     setsockopt();-->使能廣播選項
120 組播/多播:        
121 
122 3.流式套接字
123     點對點    建立鏈接,可靠
124     被動端                    主動端        
125     socket();                socket();
126     bind();                    
127     listen();                connect();
128     accept();    
129     recv();/read();            send();/write();
130     close();                close();
131

SOCK_STREAM:流式套接字,特色是有序、可靠。有序、雙工、基於連接的、以字節流爲單位的。數組

可靠不是指不丟包,而是流式套接字保證只要你能接收到這個包,那麼包中的數據的完整性必定是正確的。網絡

雙工是指雙方都能收發。socket

基於連接的是指:好比大街上張3、李四進行對話,必定不會說每句話以前都叫着對方的名字。也就是說通訊雙方是知道對方是誰的。tcp

字節流是指數據沒有明顯的界限,一端數據能夠分爲任意多個包發送。測試

 

SOCK_DGRAM:報式套接字,無連接的,固定的最大長度,不可靠的消息。spa

就像寫信,沒法保證你發出的信對方必定能收到,並且沒法保證內容不會被篡改。若是今天發了一封信,明天又發了一封信,不能保證哪封信先到。你們都能收到這個包,可是發現不是本身的以後就會丟棄,發現是本身的包再處理,有嚴格的數據分界線。
132 三次握手
133 四次揮手
134 
135 4.本地套接字
136     AF_UNIX
137 
138     man 7 unix    
相關文章
相關標籤/搜索