發表文章

目前顯示的是 1月, 2013的文章

IPv6 notes

筆記:記錄一些之前有用到的IPv6 prefix所代表的意義 前情提要: 1. IPv6 有128bits,8個segments(就是有7個冒號) 2.溝通方式有三種     -  Multicast : 顧名思義就是廣播,一個封包送給多個端點     -  Unicast : 就是一對一囉     -  Anycast : 我不是很懂,類似Multicast是一對多,不過只有端點是屬於Anycast的群組才收得到,封包好像又只送到最近的端點。可參考: http://computernetworkingnotes.com/ipv6-features-concepts-and-configurations/ipv6-address-types-and-formats.html 3. 位址的區域或範圍,主要也是三種     -  Global : 就global 嘛     -  Site-Local : 區域網路,像是192.168 一樣     -  Link-Local : 不懂... 重點: 開始之前... * FF00::/8 ==> /8  代表開頭前8個bits是固定的 Multicast: FF00::/8 Link-Local: FF02:: Site-Local: FF05:: Organization Scope: FF08:: Global: FF0E:: Node-Local / Interface-Local: FF01:: UniCast: Link-Local: FE80::/10 Site-Local: FEC0::/10 Global: 2000:/3 常見的一些表示: ::1 or 0:0:0:0:0:0:0:1  ==> local address / loopback address, like 127.0.0.1 2000:/3 ==> Global address :: or  0:0:0:0:0:0:0:0  ==> unspecified, like 0.0.0.0 FE80::/10 ==> private address, like 192.168 or 10.x ref:

路過proxy的socket

主題 :用socket在做網路的溝通,中間想透過proxy server該怎麼辦??? 簡單來說就下面這幾步,其中跟一般建connection不同的就只有第二步,要先做handshaking 0.建socket 1.跟proxy建立connection 2.丟Sock4/Sock5的protocol給proxy 3.之後丟message都透過這個socket 簡單的code來解釋 0. int Socket = socket ( AF_INET, SOCK_STREAM, 0 ); 1. connect ( Socket , <struct sockaddr with proxy info>, sizeof(struct sockaddr)); 2 . a. send ( Socket , <protocol packet>, <packet size>, 0);     b. recv ( Socket , <reply packet>, <reply packet size>);     c. // check the 2nd byte of the reply packet 3. send ( Socket , <a buffer with your message>, <message length>, 0); 重點就是在第2步啦! 接下來,看看Sock4/Sock5所需準備的packet format SOCK4 : Request Format:          +----+----+----+----+----+----+----+----+----+----+....+----+     | VN | CD | DSTPORT |      DSTIP        | USERID       |NULL|     +----+----+----+----+----+----+----+----+----+----+....+----+ # of bytes:  1    1      2              4           variable        1 packet[0] = 4;