日本高清无卡码一区二区三区 原來這才是 Socket!
40岁成熟女人牲交片20分钟

你的位置:av下页 > 40岁成熟女人牲交片20分钟 >

日本高清无卡码一区二区三区 原來這才是 Socket!

发布日期:2022-05-19 01:14    点击次数:155

日本高清无卡码一区二区三区

之前的計算機網絡系列著作中沒有詳細介紹 Socket ,這篇著作我們來聊一下 Socket。

關于對 Socket 的認識,或者分為底下幾個主題,Socket 是什么,Socket 是怎么創建的,Socket 是怎么連接并收發數據的,Socket 套接字的刪除等。

Socket 是什么以及創建過程

一個數據包經由應用措施產生,進入到協議棧中進行各種報文頭的包裝,然后操作系統調用網卡驅動措施指揮硬件,把數據發送到對端主機。整個過程的大體的圖示如下。

我們民众泄漏,協議棧其實是位于操作系統中的一些協議的堆疊,這些協議包括 TCP、UDP、ARP、ICMP、IP等。频繁某個協議的設計都是為了解決某些問題,比如 TCP 的設計就負責安全可靠的傳輸數據,UDP 設計便是報文小,傳輸后果高,ARP 的設計是能夠通過 IP 地址查詢物理(Mac)地址,ICMP 的設計宗旨是复返錯誤報文給主機,IP 設計的宗旨是為了實現大規模主機的互聯互通。

應用措施比如瀏覽器、電子郵件、文献傳輸服務器等產生的數據,會通過傳輸層協議進行傳輸,而應用措施是不會和傳輸層径直成立聯系的,而是有一個能夠連接應用層和傳輸層之間的套件,這個套件便是 Socket。

在上头這幅圖中,應用措施包含 Socket 息争析器,默契器的作用便是向 DNS 服務器發起查詢,查詢目標 IP 地址。

首先是技术问题。由于目前5G基站建设,是由大城市向中小城市慢慢扩散,能真正体验到5G速度的也就是“核心圈”范围的人。但现代人活动范围比较大,离开市中心可能就感受不到5G的优越性了。也就是说,5G基站普及率不够高,“断点式”的体验没有获得充分的满足感;

通过宽带连接路由电话也存在固有问题。与在断电后仍能运行的传统电话线不同,如果我们断电,VoIP 可能无法使用。VoIP 服务也可能会给依赖位置的系统带来问题,例如家庭安全系统或紧急电话号码。

其实它是基于3D js[1]库实现的,具体如何做渲染可以看昨天分享的zbf的代码。

也就是说,这个网络,不但你能用,你隔壁的张三也能用,张三的老乡的战友的小姨子的同学的哥哥也能用。

應用措施的底下便是操作系統內部,操作系統內部包括協議棧,協議棧是一系列協議的堆疊。操作系統底下便是網卡驅動措施,網卡驅動措施負責限制網卡硬件,驅動措施驅動網卡硬件完成收發责任。

在操作系統內部有一塊用于存放限制信息的存儲空間,這塊存儲空間記錄了用于限制通讯的限制信息。其實這些限制信息便是 Socket 的實體,或者說存放限制信息的內存空間便是套接字的實體。

這里民众有可能不太澄莹是以然,是以我用了一下 netstat 敕令來給大伙看一下套接字是啥玩意。

我們在 Windows 的敕令教唆符中輸入

netstat 日本高清无卡码一区二区三区-ano  # netstat 用于顯示套接字內容 , -ano 是可選選項 # a 不僅顯示正在通讯的套接字,還顯示包括尚未開始通讯等狀態的统统套接字 # n 顯示 IP 地址和端口號 # o 顯示套接字的措施 PID 

我的計算機會出現底下結果。

圖中的每一溜都相當于一個套接字,每一列也被稱為一個元組,是以一個套接字便是五元組(協議、土产货地址、外部地址、狀態、PID)。有的時候也被叫做四元組,四元組不包括協議。

比如圖中的第一溜,它的協議便是 TCP,土产货地址和遠程地址都是 0.0.0.0,這默示通讯還沒有開始,IP 地址暫時還未確定,而土产货端口已知是 135,关联词遠程端口還未知,此時的狀態是 LISTENING,LISTENING 默示應用措施已經打開,正在恭候與遠程主機成立連接(關于各種狀態之間的轉換,民众不错閱讀筆者的這篇著作 TCP ,丫的終于來了!!)临了一個元組是 PID,即進程標識符,PID 就像我們的身份證號碼,能夠精確定位唯独的進程。

現在你可能對 Socket 有了一個基本的認識,現在喝涎水,休息一下,讓我們繼續推敲 Socket。

現在我有個問題,Socket 是怎么創建的呢?

Socket 是和應用措施一道創建的。應用措施中有一個 socket 組件日本高清无卡码一区二区三区,在應用措施啟動時,會調用 socket 申請創建套接字,協議棧會根據應用措施的申請創建套接字:领先分派一個套接字所需的內存空間,這一步相當于是為限制信息準備一個容器,但唯独容器并沒有實際作用,是以你還需要向容器中放入限制信息;要是你不申請創建套接字所需要的內存空間,你創建的限制信息也沒有地方存放,是以分派內存空間,放入限制信息统筹兼顾。至此套接字的創建就已經完成了。

套接字創建完成后,會复返一個套接字面貌符給應用措施,這個面貌符相當于是區分不同套接字的號碼牌。根據這個面貌符,應用措施在拜托協議棧收發數據時就需要提供這個面貌符。

套接字連接

套接字創建完成后,最終還是為數據收發服務的,在數據收發之前,還需要進行一步 connect,欧美精品亚洲精品日韩久久也便是成立連接的過程。這個連接并不是真實的連接:用一根水管插在兩個電腦之間。

而是應用措施通過 TCP/IP 協議標準從一個主機通過網絡介質傳輸到另一個主機的過程。

套接字剛剛創建完成后,還沒有數據,也不泄漏通讯對象。在這種狀態下,即使你讓客戶端應用措施拜托協議棧發送數據,它也不泄漏發送到那里。是以瀏覽器需要根據網址來查詢服務器的 IP 地址,做這項责任的協議是 DNS,查詢到目標主機后,再把目標主機的 IP 告訴協議棧,至此,客戶端這邊就準備好了。

在服務器上,與客戶端一樣也需要創建套接字,关联词同樣的它也不泄漏通讯對象是誰,是以我們需要讓客戶端向服務器奉告客戶端的必要信息:IP 地址和端口號。

現在通讯雙方成立連接的必要信息已經具備,只欠一股東南風了。通讯雙方收到數據之后,還需要一塊位置來存放,這個位置便是緩沖區,它是內存的一部分,有了緩沖區,就能夠進行數據的收發操作了。

OK,現在客戶端想要給服務器發送一條數據,該進行哪些操作呢?

领先,客戶端應用措施需要調用 Socket 庫中的 connect 形式,提供 socket 面貌符和服務器 IP 地址、端口號。

connect(<面貌符>、<服務器IP地址和端口號>) 

這些信息會傳遞給協議棧中的 TCP 模塊,TCP 模塊會對請求報文進行封裝,再傳遞給 IP 模塊,進行 IP 報文頭的封裝,然后傳遞給物理層,進行幀頭封裝,之后通過網絡介質傳遞給服務器,服務器上會對幀頭、IP 模塊、TCP 模塊的報文頭進行默契,從而找到對應的套接字,套接字收到請求后,會寫入相應的信息,况且把狀態改為正在連接。請求過程完成后,服務器的 TCP 模塊會复返響應,這個過程和客戶端是一樣的(要是民众不太澄莹報文頭的封裝過程,不错閱讀筆者的這篇著作 TCP/IP 基礎知識總結)

在一個完美的請乞降響應過程中,限制信息起到极度關鍵的作用(具體的作用我們背面會說)。

SYN 便是同步的縮寫,客戶端會领先發送 SYN 數據包,請求服務端成立連接。 ACK 便是相應的原理,它是對發送 SYN 數據包的響應。 FIN 是終止的原理,40岁成熟女人牲交片20分钟它默示客戶端/服務器想要終止連接。

由于網絡環境的復雜多變,經常會存在數據包丟失的情況,是以雙方通讯時需要相互確認對方的數據包是否已經到達,而判斷的標準便是 ACK 的值。

(通讯雙方連接的成立會經過三次握手过程,對三次握手詳細的介紹不错閱讀筆者的這篇著作 TCP 基礎知識)

當统统成立連接的報文都能夠往日收發之后,此時套接字就已經進入可收發狀態了,此時不错認為用一根惩办把兩個套接字連接了起來。當然,實際上并不存在這個管子。成立連接之后,協議棧的連接操作就結束了,也便是說 connect 已經執行完畢,限制过程被交回給應用措施。

收發數據

當限制过程從 connect 回到應用措施之后,接下來就會径直進入數據收發階段,數據收發操作是從應用措施調用 write 將要發送的數據交給協議棧開始的,協議棧收到數據之后執行發送操作。

協議棧不會關心應用措施傳輸過來的是什么數據,因為這些數據最終都會轉換為二進制序列,協議棧在收到數據之后并不會馬上把數據發送出去,而是會將數據放在發送緩沖區,再恭候應用措施發送下一條數據。

為什么收到數據包不會径直發送出去,而是放在緩沖區中呢?

因為只须一朝收到數據就會發送,就有可能發送大批的小數據包,導致網絡后果着落。是以協議棧需要將數據積攢到一定數量智力將其發送出去。至于協議棧會向緩沖區放若干數據,這個不同版块和種類的操作系統有不同的說法,不過,统统的操作系統和種類都會罢黜底下這幾個標準:

第一個判斷要素是每個網絡包能夠容納的數據長度,判斷的標準是 MTU,它默示的是一個網絡包的最大長度。最大長度包含頭部,是以要是單論數據區的話,就會用 MTU - 包頭長度,由此的出來的最大數據長度被稱為 MSS。

另一個判斷標準是時間,當應用措施產生的數據比較少,協議棧向緩沖區遗弃數據后果不高時,要是每次都比及 MSS 再發送的話,可能因為恭候時間太長变成延遲,在這種情況下,即使數據長度沒有到達 MSS,也應該把數據發送出去。

協議棧并沒有告訴我們怎樣均衡這兩個成分,要是數據長度優先,那么后果有可能比較低;要是時間優先,那又會缩短網絡的后果。

經過了一段時間。。。。。。

假設我們使用的是長度有限法則,此時緩沖區已滿,協議棧要發送數據了,協議棧剛要把數據發送出去,卻發現無法一次性傳輸這么大數據量(相對的)的數據,那何如辦呢?

在這種情況下,發送緩沖區中的數據就會超過 MSS 的長度,發送緩沖區中的數據會以 MSS 大小為一個數據包進行拆分,拆分出來的每塊數據都會加上 TCP,IP,以太網頭部,然后被放進單獨的網絡包中。

到現在,網絡包已經準備好發往服務器了,关联词數據發送操作還沒有結束,因為服務器還未確認是否已經收到網絡包。因此在客戶端發送數據包之后,還需要服務器進行確認。

TCP 模塊在拆分數據時,會計算出網絡包偏移量,這個偏移量便是相對于數據從頭開始計算的第幾個字節,并將算好的字節數寫在 TCP 頭部,TCP 模塊還會生成一個網絡包的序號(SYN),這個序號是唯独的,這個序號便是用來讓服務器進行確認的。

服務器會對客戶端發送過來的數據包進行確認,確認無誤之后,服務器會生成一個序號和確認號(ACK)并一道發送給客戶端,客戶端確認之后再發送確認號給服務器。

我們來看一下實際的责任過程。

领先,客戶端在連接時需要計算出序號运行值,并將這個值發送給服務器。接下來,服務器通過這個运行值計算出 確認號并复返給客戶端。运行值在通讯過程中有可能會丟棄,因此當服務器收到运行值后需要复返確認號用于確認。同時,服務器也需要計算出從服務器到客戶端场所的序號运行值,并將這個值發送給客戶端。然后,客戶端也需要根據服務器發來的运行值計算出確認號發送給服務器,至此,連接成立完成,接下來就不错進入數據收發階段了。

數據收發階段中,通讯雙方不错同時發送請乞降響應,雙方也不错同時對請求進行確認。

請求 - 確認機制极度強大,通過這一機制,我們不错確認采纳方有沒有收到某個包,要是沒有收到則再行發送,這樣一來,凡是網絡中出現的任何錯誤,我們都不错即使發現并補救。

網卡、集線器、路由器都沒有錯誤補救機制,一朝檢測到錯誤就會径直丟棄數據包,應用措施也沒有這種機制,起作用的仅仅 TCP/IP 模塊。

由于網絡環境復雜多變,是以數據包會存在丟失情況,因此發送序號和確認號也存在一定規則,TCP 會通過窗口惩办確認號,我們這篇著作不再贅述,民众不错閱讀筆者的這篇著作 TCP 基礎知識 來尋找谜底。

斷開連接

當通讯雙方不再需要收發數據時,需要斷開連接。不同的應用措施斷開連接的時機不同。以 Web 為例,瀏覽器向 Web 服務器發送請求音书,Web 服務器再复返響應音书,這時收發數據就全部結束了,服務器可能會领先發起斷開響應,當然客戶端也有可能會领先發起(誰先斷開連接是應用措施做出的判斷),與協議棧無關。

無論哪一方發起斷開連接的請求,都會調用 Socket 庫的 close 措施。我們以服務器斷開連接為例,服務器發起斷開連接請求,協議棧會生成斷開連接的 TCP 頭部,其實便是設置 FIN 位,然后拜托 IP 模塊向客戶端發送數據,與此同時,服務器的套接字會記錄下斷開連接的相關信息。

收到服務器發來 FIN 請求后,客戶端協議棧會將套接字標記為斷開連接狀態,然后,客戶端會向服務器复返一個確認號,這是斷開連接的第一步,在這一步之后,應用措施還會調用 read 來讀取數據。比及服務器數據發送完成后,協議棧會呈报客戶端應用措施數據已經采纳完畢。

只须收到服務器复返的统统數據,客戶端就會調用 close 措施來結束收發操作,這時客戶端會生成一個 FIN 發送給服務器,一段時間后服務器复返 ACK 號,至此,客戶端和服務器的通讯就結束了。

刪除套接字

通讯完成后,用來通讯的套接字就不再會使用了,此時我們就不错刪除這個套接字了。不過,這時候套接字不會馬上刪除,而是等過一段時間再刪除。

恭候這段時間是為了防护誤操作,最常見的誤操作便是客戶端复返的確認號丟失,至于恭候多長時間,和數據包重傳的神气有關。

本文轉載自微信公眾號「措施員cxuan」,不错通過以下二維碼關注。轉載本文請聯系措施員cxuan公眾號。

 



友情链接:
  • 一个添下面两个吃奶把腿扒开
  • 免费情侣作爱视频
  • 洗澡被公强奷30分钟视频
  • 国产成人亚洲精品无码青
  • 午夜福利视频


  • Powered by av下页 @2013-2022 RSS地图 HTML地图