青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-162  評論-223  文章-30  trackbacks-0
   繼上篇TCP/IP FAQ(1),本篇涵蓋了域和協議、IP編址、插口、原始IP、unix域方面的問題與解答。

【Domain & Protocol】

1. 什么是域,它和協議有什么關系?
   域可以理解為一種容納協議的空間,它的存在便于了協議的分類;域和協議是集合與元素的關系,一個域中的每個協議使用同類地址,并且每種地址只被一個域使用,一個域能由協議族或地址族常量唯一標識。
2. TCP/IP中有哪些域及其協議?
   internet、iso、route、ccitt、imp、network systems和unix,其中internet域含有ip,icmp,igmp,tcp和udp五種協議,unix域用于ipc通信。
3. 哪些地方會用到域?
   一個網絡層協議必須分用輸入數據報,并交給相應的傳輸層協議,由于域包含了協議族,因此必須從對應的域中找到合適的協議去處理。例如IP對應的域為internet,這個域對應的協議族為inetsw,當收到IP數據報時,就從inetsw中找到對應的傳輸層協議去輸入處理。

【IP Addressing】
1. IP地址有哪幾類?
   分為5類,A、B和C類用于單播;D類用于多播;E類用于實驗。
2. sockaddr和sockaddr_in有什么區別聯系?
   sockaddr是一種通用的用于接口編址信息的結構,它將硬件與協議的地址細節相對于接口層隱藏起來,成員依次為sa_len、sa_family和sa_data,而sockaddr_in成員依次為sin_len、sin_family、sin_port、sin_addr和sin_zero。它們的前兩個成員其實是一樣的,只是命名不同,而sockaddr_in中的sin_port標識傳輸層的端口,sin_addr標識IP層的地址,所以它是Internet協議的專用接口編址結構,sin_zero僅為填充用,因為sockaddr_in長度不應小于sockaddr。
3. 插口編址結構允許的最大長度是多少?
   sockaddr最后一個成員是可擴展的,這是C語言的通用技術,因為其第一個成員為u_char類型,所以最大長度是255。
4. 一個接口可以配置多個IP地址,是怎么實現的?
   ifaddr表示通用的接口地址,ifnet表示接口,它有個類型為ifaddr*的if_addrlist成員,表示當前接口上的地址鏈表。in_ifaddr表示Internet協議專用的接口地址,而IP屬于Internet協議,因此用in_ifaddr表示,所有的IP地址組成一個類型為in_ifaddr*的鏈表。當增加一個IP地址時,就需要插入這兩個鏈表中;當刪除一個IP地址時,就需要從它們當中移除。
5. 為什么配置IP主機地址和網絡掩碼可以是獨立的?
   因為它們使用不同的命令實現,前者用SIOCSIFADDR,后者用SIOCSIFNETMASK。當配置IP主機地址時,如果沒有指明網絡掩碼,那么網絡掩碼被設置成默認的。
6. 為什么訪問IP接口地址使用的是UDP插口而不是原始IP插口?
   只有超級用戶用程才能創建原始IP插口,而通過UDP插口,任何用戶進程都能查看接口配置。

【Socket】
1. 為什么會存在插口層?
   從概念上講,tcp/ip協議棧劃分為鏈路、網絡、傳輸和應用4層;但從實現上講,在應用層和其下層中間,引入了一個插口層,作為進程和內核通信的橋梁,主要功能是將進程發送的與協議有關的請求映射到產生插口時指定的與協議有關的實現,從而屏蔽了不同協議處理的細節。
2. 為什么服務器進程總是要調用bind,客戶進程能調用它嗎?
   bind將一個本地地址同一個插口相關聯,客戶進程需要同一個已知地址建立連接或發送數據報到已知地址,如果不調用bind,服務器進程就無法在某個已知地址上接受TCP連接或接收UDP數據報。客戶進程也能調用bind,這樣便可以由應用程序而非內核來選擇一個本地地址,其結果是只能接收目的地址為被綁定地址的數據包,但通常不必調用bind,因為內核會自動決定外出地址和臨時端口。
3. 對于tcp和udp協議的插口,調用connect有什么區別聯系?
   共同點是設定插口的外部地址(插口的地址存儲在相關的協議控制塊中),不同點如下
   1)tcp:與遠端系統進行3次握手交互,如果插口是非阻塞的且連接正在進行中,那么返回EINPROGRESS,下次再調用則返回EALREADY;如果連接成功,無論是否阻塞,那么下次再調用會返回EISCONN;如果連接失敗,那么下次再調用,則重新開始三次握手。
   2)udp:沒有3次握手交互,直接設定外部地址,無論插口是否阻塞,調用會立即返回,多次調用則會替換老的外部地址。發送數據必須使用write或目的地址為空的sendto,若sendto目的地址非空,則返回EISCONN。如果沒有事先調用connect,那么調用目的地址為空的sendto則會返回ENOTCONN。
4. 什么情況下調用close會阻塞?
   連接已建立且設置了SO_LINGER選項并延時值非零的阻塞插口。
5. 插口IO有哪些系統調用?
   發送有write、writev、sendto和sendmsg,接收有read、readv、recvfrom和recvmsg。注意,send和recv是庫函數而非系統調用,前者調用sendto實現,后者調用recvfrom實現。
6. write、writev、read、readv與sendto、sendmsg、recvfrom、recvmsg有什么不同?
   1)前面4個適合于任何描述符,而后面4個只能用于插口。
   2)前面4個不支持標志,而后面4個支持。
   3)前面前2個不支持目的地址、后2個不支持源地址,而后面前2個支持目的地址、后2個支持源地址。
   4)前面4個不支持控制信息,而后面第2個和第4個支持。
7. 如何斷開已連接的udp插口,允許調用sendto向其它主機發送數據?
    由于系統并沒有提供形如disconnect的斷連API,但connect內部實現是先斷連,再調用對應協議的PRU_CONNECT請求處理,因此向connect傳遞無效的外部地址結構(如IP=0.0.0.0,Port=0),雖然這樣會導致結果失敗,但先前的斷連成功,對應pcb的外部地址被設為INADDR_ANY,所以調用sendto就不會返回EISCONN。

【Raw IP】
1. 怎么使用原始IP,它有哪些用途及應用?
   創建SOCK_RAW類型的原始插口,就能使用原始IP機制,它有下列用途:
   1)發送和接收ICMP和IGMP報文,如ping程序和多播路由守護程序。
   2)構造自己的IP首部,如路由跟蹤程序。
   3)設計基于IP的新的傳輸層協議,如gated程序。
2. 協議值為PROTOCOL_RAW(255)的原始插口能收到什么類型的IP數據報?
   由于255是非零的保留值,這樣的IP數據報在網絡中不會存在,原始IP輸入處理協議比較測試失敗,因此收不到任何類型的IP數據報。
3. 協議值為0的原始插口能收到什么類型的IP數據報?
   由于協議值為0,原始IP輸入處理忽略了協議比較測試,因此能收到任何類型的IP數據報。
4. 如何處理收到的IP數據報?
   遍歷Internet PCB表,依次從協議值、本地地址和外部地址三項來比較IP數據報和每個PCB,將IP數據報復制追加到所有匹配的PCB對應的插口緩存中,并喚醒等待的進程。
5. 如何發送數據?
   先填充IP首部,如果未設置IP_HDRINCL選項,那么由內核填充,否則由應用程序在發送前填充,再交給IP協議輸出處理。
6. 內核何時會調用原始輸入?
   當收到的協議類型為除IPPROTO_TCP、IPPROTO_UDP、IPPROTO_ICMP和IPPROTO_IGMP外的IP數據報時調用。

【Unix domain】
1. 使用unix域的原因有哪些?
   1)當通信雙方在同一主機上時,使用unix域插口的速度比tcp和udp插口要快很多。
   2)支持同一主機進程間傳遞描述符。
2. unix域和internet域有什么不同?
   1)編址結構不同:前者是sockaddr_un,與文件系統路徑名關聯,而后者是sockaddr_in,與IP地址和端口關聯。
   2)協議控制塊不同:前者是unpcb,沒有全局的pcb鏈表,而后者是inpcb,有全局的pcb雙向循環鏈表。
3. 如果一個unix域服務器在bind后unlink了被綁定的路徑名,會發生什么情況?
   因為connect內部實現查找路徑名失敗,所以連接失敗,但listen會成功,因為bind會創建新的vnode和pcb關聯,且PRU_LISTEN請求實現只檢查vnode是否為空。
4. 如果一個unix域服務器在終止時沒有unlink被綁定的路徑名,會發生什么情況?
   因為connect內部實現雖能找到路徑名但找不到相關的插口,所以連接被拒絕。
5. 系統調用socketpair和pipe有什么區別聯系?
   共同點是使用unix域,即socket調用第1參數為AF_UNIX,不同點如下
   1)前者是雙工的,因為兩個插口標志都為讀寫,且它們的pcb相互指向對方;后者是單工的,因為一個插口標志為只讀,另一個為只寫,寫插口的pcb指向讀插口的pcb。
   2)前者支持數據報和流式插口,后者僅支持流式插口。
6. unix域是怎么實現傳遞描述符的?
   描述符存儲在控制信息cmsghdr內,cms_level=SOL_SOCKET且cms_type=SCM_RIGHTS,unix域的發送請求實現將描述符轉換為file指針,這個過程叫內部化,接收請求實現把file指針轉換為最小的沒有使用的描述符,這個過程叫外部化。
posted on 2013-09-03 15:52 春秋十二月 閱讀(2392) 評論(1)  編輯 收藏 引用 所屬分類: Network

評論:
# re: TCP/IP FAQ 2[未登錄] 2013-09-04 13:22 | jacky
socket一般翻譯為套接字比較好吧  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产96久久久香蕉| 欧美黄色片免费观看| 免费亚洲一区| 欧美在线视频二区| 在线一区观看| 一区二区三区日韩欧美精品| 欧美成人精品一区二区三区| 久久免费黄色| 久久视频在线视频| 久久久精品性| 欧美成人网在线| 欧美激情亚洲另类| 亚洲精品一区二区在线| 日韩亚洲欧美成人| 亚洲免费视频成人| 久久精品99| 欧美激情精品久久久六区热门 | 欧美日本韩国一区| 欧美体内谢she精2性欧美| 国产精品v一区二区三区| 国产精品入口日韩视频大尺度| 国产精品女主播| 亚洲国产欧美日韩精品| 亚洲视频精选| 久久中文在线| 香蕉久久夜色| 欧美日韩日韩| 亚洲久色影视| 国产精品入口66mio| 亚洲电影视频在线| 欧美一进一出视频| 亚洲欧洲久久| 久久精品av麻豆的观看方式| 欧美三区在线| 日韩视频免费在线| 欧美一区二区三区在线观看| 欧美高清在线观看| 久久亚洲一区二区三区四区| 国产精品久久久久久模特| 亚洲国产精品一区制服丝袜 | 国产伦精品一区二区三区视频黑人| 麻豆精品在线播放| 久久精品91| 亚洲免费视频在线观看| 欧美日在线观看| 亚洲午夜在线| 亚洲欧美国产毛片在线| 国产精品综合久久久| 亚洲视频www| 亚洲欧美韩国| 亚洲高清视频在线| 亚洲国产日韩欧美在线动漫| 久热国产精品| 亚洲一二三区精品| 久久久99爱| 一区二区三区久久久| 中文一区在线| 亚洲国产欧美精品| 一区二区三区高清不卡| 激情亚洲网站| 99国产精品99久久久久久粉嫩 | 国产精品乱人伦中文| 亚洲欧美日韩一区二区在线| 欧美一站二站| 亚洲一区二区免费| 六月丁香综合| 久久人人爽人人爽| 欧美体内she精视频| 美女精品网站| 国产婷婷成人久久av免费高清 | 亚洲精品国产精品国产自| 国产精品福利av| 99re6热在线精品视频播放速度 | 毛片一区二区三区| 亚洲午夜电影在线观看| 欧美成人免费va影院高清| 可以免费看不卡的av网站| 欧美精品一区二区三| 亚洲二区免费| 日韩视频永久免费| 欧美日本在线视频| 亚洲精品一区二区三区婷婷月 | 欧美一区二区三区在线看| 一本色道久久综合亚洲精品小说 | 欧美大片在线观看一区| 麻豆成人在线| 亚洲精品一区二区网址| 欧美国产精品人人做人人爱| 国内伊人久久久久久网站视频| 亚洲天堂网在线观看| 久久国产精品一区二区三区| 国产日韩欧美视频| 久久久久久久久久看片| 亚洲福利在线看| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品久久久久91| 午夜精品久久久久久久99水蜜桃 | 亚洲一区二区三区在线播放| 亚洲欧美清纯在线制服| 怡红院精品视频在线观看极品| 久久久成人网| 在线视频日韩| 亚洲成人在线网站| 久久国产精品久久久| 99国产精品久久久久久久久久 | 亚洲欧美国产视频| 91久久精品美女| 榴莲视频成人在线观看| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲日韩欧美一区二区在线| 国产精品劲爆视频| 欧美日韩视频在线| 欧美国产在线观看| 老司机亚洲精品| 亚洲欧美国产va在线影院| 亚洲精选在线| 91久久午夜| 亚洲国产日韩一区| 亚洲国产第一页| 亚洲国产高清高潮精品美女| 国产伦精品一区二区三| 国产精品久久午夜夜伦鲁鲁| 国产精品久久久久9999吃药| 欧美女激情福利| 欧美日精品一区视频| 久久精品国产久精国产爱| 久久国产日韩| 久久精品人人| 免费观看日韩| 亚洲裸体在线观看| 99国产精品99久久久久久粉嫩| 99视频一区二区三区| 在线亚洲自拍| 久久精品色图| 欧美视频一区二区三区四区| 欧美午夜视频在线| 韩日精品视频一区| 一区二区91| 美女任你摸久久| 一区二区三区蜜桃网| 午夜宅男欧美| 欧美日韩国产另类不卡| 激情国产一区二区| 亚洲欧美日韩精品久久久| 欧美激情乱人伦| 欧美中文字幕在线| 欧美性开放视频| 亚洲精品永久免费| 久久久久一区| 午夜精品一区二区三区在线播放| 欧美gay视频激情| 在线成人激情| 久久一区二区精品| 久久精品国产清自在天天线| 欧美日韩一区不卡| 最新国产乱人伦偷精品免费网站| 国产精品久久久999| 日韩亚洲视频| 亚洲国产欧美精品| 美日韩丰满少妇在线观看| 精久久久久久| 欧美jjzz| 欧美黄色视屏| 亚洲自拍电影| 亚洲欧美日韩精品在线| 国产精品综合网站| 久久久噜噜噜久噜久久 | 亚洲美女中文字幕| 欧美精品二区| 亚洲欧美另类在线观看| 亚洲色图在线视频| 国产中文一区二区| 欧美福利视频网站| 国产精品国产三级国产普通话蜜臀| 一本大道久久a久久精品综合 | 亚洲一区二区三| 午夜精品成人在线| 亚洲乱码久久| 久久久精品动漫| 亚洲免费观看高清在线观看| 日韩亚洲在线观看| 亚洲第一精品福利| 一区二区三区产品免费精品久久75 | 亚洲综合国产激情另类一区| 国产精品成人在线观看| 欧美一区激情视频在线观看| 久久亚洲欧美| 欧美一区二区三区久久精品| 免播放器亚洲| 久久精品国产综合| 亚洲经典三级| 激情欧美一区二区三区| 一区二区三区久久| 亚洲精品日韩久久| 另类春色校园亚洲| 美女91精品| 激情综合激情| 久久久久久国产精品mv| 久久久久久尹人网香蕉| 国产午夜精品久久久久久久|