欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Socket與TCP/IP的關系-創(chuàng)新互聯(lián)

要寫網(wǎng)絡程序就必須用 Socket ,這是程序員都知道的。而且,面試的時候,我們也會問對方會不會 Socket 編程?一般來說,很多人都會說, Socket 編程基本就是 listen , accept 以及 send , write 等幾個基本的操作。是的,就跟常見的文件操作一樣,只要寫過就一定知道。[@more@]

對于網(wǎng)絡編程,我們也言必稱 TCP/IP ,似乎其它網(wǎng)絡協(xié)議已經(jīng)不存在了。對于 TCP/IP ,我們還知道 TCP 和 UDP ,前者可以保證數(shù)據(jù)的正確和可靠性,后者則允許數(shù)據(jù)丟失。最后,我們還知道,在建立連接前,必須知道對方的 IP 地址和端口號。除此,普通的程序員就不會知道太多了,很多時候這些知識已經(jīng)夠用了。最多,寫服務程序的時候,會使用多線程來處理并發(fā)訪問。

創(chuàng)新互聯(lián)主營靖江網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App制作,靖江h(huán)5微信小程序搭建,靖江網(wǎng)站營銷推廣歡迎靖江等地區(qū)企業(yè)咨詢

我們還知道如下幾個事實:

1 。一個指定的端口號不能被多個程序共用。比如,如果 IIS 占用了 80 端口,那么 Apache 就不能也用 80 端口了。

2 。很多防火墻只允許特定目標端口的數(shù)據(jù)包通過。

3 。服務程序在 listen 某個端口并 accept 某個連接請求后,會生成一個新的 socket 來對該請求進行處理。

于是,一個困惑了我很久的問題就產(chǎn)生了。如果一個 socket 創(chuàng)建后并與 80 端口綁定后,是否就意味著該 socket 占用了 80 端口呢?如果是這樣的,那么當其 accept 一個請求后,生成的新的 socket 到底使用的是什么端口呢(我一直以為系統(tǒng)會默認給其分配一個空閑的端口號)?如果是一個空閑的端口,那一定不是 80 端口了,于是以后的 TCP 數(shù)據(jù)包的目標端口就不是 80 了 -- 防火墻一定會組織其通過的!實際上,我們可以看到,防火墻并沒有阻止這樣的連接,而且這是最常見的連接請求和處理方式。我的不解就是,為什么防火墻沒有阻止這樣的連接?它是如何判定那條連接是因為 connet80 端口而生成的?是不是 TCP 數(shù)據(jù)包里有什么特別的標志?或者防火墻記住了什么東西?

后來,我又仔細研讀了 TCP/IP 的協(xié)議棧的原理,對很多概念有了更深刻的認識。比如,在 TCP 和 UDP 同屬于傳輸層,共同架設在 IP 層(網(wǎng)絡層)之上。而 IP 層主要負責的是在節(jié)點之間( End to End )的數(shù)據(jù)包傳送,這里的節(jié)點是一臺網(wǎng)絡設備,比如計算機。因為 IP 層只負責把數(shù)據(jù)送到節(jié)點,而不能區(qū)分上面的不同應用,所以 TCP 和 UDP 協(xié)議在其基礎上加入了端口的信息,端口于是標識的是一個節(jié)點上的一個應用。除了增加端口信息, UPD 協(xié)議基本就沒有對 IP 層的數(shù)據(jù)進行任何的處理了。而 TCP 協(xié)議還加入了更加復雜的傳輸控制,比如滑動的數(shù)據(jù)發(fā)送窗口( Slice Window ),以及接收確認和重發(fā)機制,以達到數(shù)據(jù)的可靠傳送。不管應用層看到的是怎樣一個穩(wěn)定的 TCP 數(shù)據(jù)流,下面?zhèn)魉偷亩际且粋€個的 IP 數(shù)據(jù)包,需要由 TCP 協(xié)議來進行數(shù)據(jù)重組。

所以,我有理由懷疑,防火墻并沒有足夠的信息判斷 TCP 數(shù)據(jù)包的更多信息,除了 IP 地址和端口號。而且,我們也看到,所謂的端口,是為了區(qū)分不同的應用的,以在不同的 IP 包來到的時候能夠正確轉(zhuǎn)發(fā)。

TCP/IP 只是一個協(xié)議棧,就像操作系統(tǒng)的運行機制一樣,必須要具體實現(xiàn),同時還要提供對外的操作接口。就像操作系統(tǒng)會提供標準的編程接口,比如 Win32 編程接口一樣, TCP/IP 也必須對外提供編程接口,這就是 Socket 編程接口 -- 原來是這么回事?。?

在 Socket 編程接口里,設計者提出了一個很重要的概念,那就是 socket 。這個 socket 跟文件句柄很相似,實際上在 BSD 系統(tǒng)里就是跟文件句柄一樣存放在一樣的進程句柄表里。這個 socket 其實是一個序號,表示其在句柄表中的位置。這一點,我們已經(jīng)見過很多了,比如文件句柄,窗口句柄等等。這些句柄,其實是代表了系統(tǒng)中的某些特定的對象,用于在各種函數(shù)中作為參數(shù)傳入,以對特定的對象進行操作 -- 這其實是 C 語言的問題,在 C++ 語言里,這個句柄其實就是 this 指針,實際就是對象指針啦。

現(xiàn)在我們知道, socket 跟 TCP/IP 并沒有必然的聯(lián)系。 Socket 編程接口在設計的時候,就希望也能適應其他的網(wǎng)絡協(xié)議。所以, socket 的出現(xiàn)只是可以更方便的使用 TCP/IP 協(xié)議棧而已,其對 TCP/IP 進行了抽象,形成了幾個最基本的函數(shù)接口。比如 create , listen , accept , connect , read 和 write 等等。

現(xiàn)在我們明白,如果一個程序創(chuàng)建了一個 socket ,并讓其監(jiān)聽 80 端口,其實是向 TCP/IP 協(xié)議棧聲明了其對 80 端口的占有。以后,所有目標是 80 端口的 TCP 數(shù)據(jù)包都會轉(zhuǎn)發(fā)給該程序(這里的程序,因為使用的是 Socket 編程接口,所以首先由 Socket 層來處理)。所謂 accept 函數(shù),其實抽象的是 TCP 的連接建立過程。 accept 函數(shù)返回的新 socket 其實指代的是本次創(chuàng)建的連接,而一個連接是包括兩部分信息的,一個是源 IP 和源端口,另一個是宿 IP 和宿端口。所以, accept 可以產(chǎn)生多個不同的 socket ,而這些 socket 里包含的宿 IP 和宿端口是不變的,變化的只是源 IP 和源端口。這樣的話,這些 socket 宿端口就可以都是 80 ,而 Socket 層還是能根據(jù)源 / 宿對來準確地分辨出 IP 包和 socket 的歸屬關系,從而完成對 TCP/IP 協(xié)議的操作封裝!而同時,放火墻的對 IP 包的處理規(guī)則也是清晰明了,不存在前面設想的種種復雜的情形。

明白 socket 只是對 TCP/IP 協(xié)議棧操作的抽象,而不是簡單的映射關系,這很重要!

一個socket 由四個標識決定,客戶端ip,客戶端port, 服務端ip,服務端port,

在一個客戶端和服務端通信過程中,客戶端ip, 服務端ip,服務端port,都是相同的,只有客戶端port不同,但是只要一個不同,就算是一個新的socket,

所以accept 返回的是一個新的socket。

網(wǎng)站名稱:Socket與TCP/IP的關系-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article36/hossg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、網(wǎng)站維護、ChatGPT網(wǎng)站策劃、營銷型網(wǎng)站建設、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
日韩欧美高清一区二区| 欧美一区二区久久综合| 一区二区中文字幕精品| 亚洲精品美女久久久久高潮| 亚洲男女尻逼片视频网站| 国产特级黄片免费观看| 国产自愉怕一区二区三区| 国产姐弟操大率悠荡笕| 国产亚洲欧美精品在线观看| 91高清视频在线免费观看| 亚洲精品欧美综合第四区| 在线免费观看午夜视频| 人妻天堂久久一区二区三区| 亚洲av资源一区二区| 日本伦理三级在线观看| 真实夫妻露脸爱视频九色网| 久久日韩人妻中文字幕| 成人在线免费黄色小说| 18禁的视频在线观看| 亚洲av日韩av一区| 丰满人妻被黑人猛烈进入免费| 成年人国产免费在线观看| 亚洲国产精品久久久精品| 成人国产av一区二区三区| 亚洲精品熟女av影院| 99热精品这里只有精品| 亚洲一区二区日韩综合久久| 麻豆国产国语精品三级在线观看 | 国产亚洲一区二区高清| 久久人妻制服乱码中文字幕| 久久精品免成人费电影| 激情亚洲不卡一区二区| 91免费看片在线观看| 亚洲午夜激情视频在线| 日韩视频精品推荐一区二区| 后入蜜桃臀美女在线观看| 日韩av一区三区在线| 欧美日韩黄色人人小视频| 亚洲精品啪啪一区二区| 国产乱国产乱老熟女视频| 国产精品亚洲精品日韩在线|