❶ 操作系統是如何將socket接受的數據發送給應用層的
在正篇開始之前,我先提問幾個問題,不知道你是否全都了解:
(1) 網路請求是通過http發送的嗎?
(2) http與tcp之間的關系?
(3) 網路請求是怎麼發送的,通過什麼形式去發送的?
在過往對於http與tcp的理解其實只是一個簡單模糊的概念,仔細想想其實http只是一種協議,tcp只是用於建立一個持久連接,它們都不是用於網路發送數據的根本,真正發送數據的是我們的物理層,http協議只是作為一個標識的作用,簡單來說是定位到某一主機。
下面來介紹一下計算機網路體系結構
計算機網路分為7層,分別是物理層,數據鏈路層,網路層,傳輸層,會話層,表示層以及應用層,由於7層太多所以後面經過演變之後定為5層,把應用層,會話層,表示層給合統稱為應用層,我們客戶端的每一步操作,舉個例子,當我們點擊發送按鈕請求網路的時候,這時候會通過應用層逐漸往下傳遞直到物理層,物理層會提供一個互聯網網路介面,這時候才真正通過互聯網開始傳輸數據,這里最主要介紹的是傳輸層以及物理層,其它的網路一下,傳輸層是第一個端到端的層次,也是進程——進程的層次。
主要功能是實現端到端的可靠數據傳輸、復用與分解、連接控制、流量控制和擁塞控制(這些東西都是定義去網路一下,比如說流量控制,其實就是控制數據的發送量,你不能一次性發送很多數據,原因想一下就知道了),客戶端的每一步操作都會在這5層體現出來,查下定義之後就會一目瞭然(比如說在我們終止會話,這時候就是由會話層管理,實體間交換數據的語法,解決格式和數據表示的差別是由表示層來完成等),在我們建立連接的時候比如說發送一個http請求(原理跟後面的socket數據傳輸模塊是一樣的),我們會先建立一個tcp連接,然後發送http請求,這時候數據會經過傳輸層,傳輸層里攜帶了發送數據的報文(比如ip地址,埠號之類的,數據內容),向下傳遞到物理層,物理層最後會提供一個互聯網網路介面去發送數據,數據是以比特流的形式發送,發送到交換機上面(交換機是什麼,去網路查一下,不做解釋),交換機是有多個的,當我們數據非常大的時候,數據會被分解發送到多個交換機上面,傳到對方客戶端或者伺服器的時候數據會重新整合起來,上面的是一個簡單的http請求,下面來介紹一下Socket。
1.Socket的整體流程:
udp客戶端:創建套接字,發送數據,接收數據,關閉套接字。
udp服務端:創建套接字,綁定地址和埠號,接收數據,發送數據,關閉套接字。
tcp客戶端:創建套接字,建立連接,發送數據,接收數據,關閉套接字。
tcp服務端:創建套接字,綁定地址和埠號,設置監聽,建立連接,發送數據,接收數據,關閉套接字。
這些理解起來很容易,我們客戶端是要發送數據的,服務端需要接收數據,所以服務端要綁定地址和埠號,而tcp是需要三次握手的所以要有監聽。
2.Socket三次握手
第一次握手,客戶端發送請求給服務端(詢問是否可以建立連接)。
第二次捂手,服務端回應給客戶端一個確認,接受連接或者拒絕連接
第三次握手,經過確認之後,客戶端回應給服務端(意思是我要開始發送數據了,下一步就開始發送了)。
理解三次握手,為什麼要三次,第一次握手確認客戶端可以發送請求,第二次握手確認服務端可以接收並且發送,第三部確認客戶端可以接收。
3.Scoket四次揮手
第一次揮手,客戶端向伺服器發送斷開連接請求
第二次揮手,服務端回應客戶端(意思是,稍等等我數據傳完(處理完的意思),在斷開)
第三次揮手,服務端回應客戶端斷開請求(可以斷開了)
第四次揮手,客戶端與服務端請求斷開。
tcp連接是面向連接的,數據發送可靠,udp是面向無連接的,數據發送過後就不管了,下面介紹一下tcp為什麼數據可靠
具體方法如下:
差錯檢測:我們發送數據的時候剛剛說過是由物理層提供的互聯網網路介面以比特流的形式進行發送,那麼這個時候差錯檢測利用差錯編碼實現數據包傳輸過程中的比特差錯檢測,保證數據正確性
確認:接收方向發送方反饋接收狀態。ACK(肯定確認);NAK(否定確認)
重傳:當沒有接收到反饋狀態。ACK(肯定確認);NAK(否定確認)的時候,或者請求超時的時候進行重新發送
計時器:內部檢測,一個定時器,當數據在一定時間沒有接收到確認的時候就認為發送失敗,進行重傳操作。
序號:剛剛說了重傳有兩種情況,那麼當重傳是因為網路超時引起的,那麼這個時候計時器進行了一次重傳,然後上次超時後並沒有發送失敗這個時候也發送成功了,這個時候就會造成數據錯亂,那麼序號就起了一個作用,就是給數據進行排序,以至於不錯亂。
下面來說一下tcp可靠傳輸協議滑動窗口協議
左邊的代表的是接收的數據,中間代表的是正在處理的,右邊代表的是沒有處理的,在我們發送數據的時候比如56789這些數據發送,56成功了,這時候窗口就會往右移動,接收的時候呢,當我們接收比如56,接收成功了,這時候窗口往右移動,這里有一個需要注意一下,比如說當我們5沒有發送成功或者說5沒有接收成功,而6發送成功了,這時候窗口是不會往右移動的,它會等待5發送成功後在往右移動,浮動窗口協議里還有GBN協議和SR協議,這兩個的主要區別是,GBN協議的發送窗口只能發送一個,比如上面中間准備發送的5678就只能存在5一個,但是接收窗口是可以有多個的,SR協議是可以發送窗口與接收窗口都是可以多個的。
最後總結一下http請求與socket的差異,socket是套接字,用於將報文傳輸到傳輸層,http請求在發送的時候會建立tcp連接,所以http也會分為http持久性連接和非持久性連接,至於網路傳輸都是要經過物理層才能傳輸,數據經過多個交換機進行分解,傳到伺服器的時候在進行整合。
網卡接收到數據根據數據頭,將數據寫到對應的內存,並發出中斷,系統接收到中斷,然後通知應用吧?
VC中客戶端socket與伺服器連接後,需要執行一個封狀的操作
朝伺服器發送一些數據(命令),然後返回結果
假設全部才字元串,類似這樣的函數
CString SendCommand (CString cmd,socket sk)
要求在執行這個函數的時候能同時響應用戶界面操作
也就是要用非同步方式
而且這個socket已經建立好,有RecvTheard在處理
我目前是用Event實現的,很別扭:
m_hevtReadStore=CreateEvent(NULL,false,FALSE,NULL);
//m_tcp是封裝的socket基本操作類
❷ 電腦如何設置網路連接
問題一:電腦如何設置寬頻連接 你好,請使用下面的創建寬頻連接。希望能夠幫助你,望採納!
首先是xp系統的創建的方法:
1.進入控制面板,選擇網路連接,然後點擊左側的「創建一個新的連接」,如圖
2.出現「連接向導」
3.選擇連接到「Internet」
4.手動設置我的連接
5.選擇「要求用戶名和密碼的寬頻連接來連接」
6.IPS不用寫,直接點擊下一步
7.用戶名和密碼也不用,直接下一步
8.選上「在我的桌面添加一個到此連接的快捷方式」,這樣桌面上就有寬頻連接了,就輸入你的用戶名和密碼開始網上沖浪吧!
windows7系統創建連接的方法:
1.右鍵點擊桌面上的「網路」,選擇屬性2.進入「網路和共享中心」,點解「設置新的連接或網路」
3.彈出「設置連接和網路」界面,選擇「連接到Internet」4.在這個界面,點擊「寬頻(PPPOE)5.在這個界面,用戶名和密碼可以不填,連接名稱寫上「寬頻連接」,點擊連接
6.彈出「正在寬頻連接」的界面,點擊下面的跳過
7.接著點擊關閉
8.回到「網路和共享中心」,點擊左側的「更改適配器設置」
9.彈出「網路連接」的界面,可以看到新建的「寬頻連接」,右鍵單擊「寬頻連接」,選擇「創建快捷方式」
10.在電腦的桌面上就會出現「寬頻連接的」圖標
問題二:新買的電腦怎麼設置網路連接 1、把寬頻貓的輸出線,與電腦網卡相連。
2、啟動寬頻貓的電源。
3、 右鍵單擊「網上鄰居」--屬性--網路任務欄點擊「創建一個新的連接」--下一步--點選「連接到Internet」點擊「下一步」--點選「手動設置我的連接」,下一步,--點選「用要求用戶名和密碼的寬頻連接來連接」點擊「下一步」--輸入isp名稱。例如:「寬頻連接」點擊「下一步」--輸入用戶名、密碼、確認密碼,點擊「下一步」--勾選「在我的桌面上添加一個到此連接的快捷方式」,點擊「完成」按鈕即可。
4、設置IP地址。
右擊網上鄰居圖標,打開「本地連接」屬性,在TCP/IP協議上雙擊,在出來的對話框中選擇「自動獲取IP地址、自動獲取DNS地址」.
打開「寬頻連接」屬性,---網路---在TCP/IP協議上雙擊,在出來的對話框中選擇「自動獲取IP地址、自動獲取DNS地址」.
5、打開「寬頻連接」圖標,輸入你的帳號和密碼後,點擊連接。
相信到這里,你應該會了,如果幫到,請採納,謝謝!
如果還沒搞明白,可以網路找找答案!
問題三:電腦網路連接怎麼設置成默認 操作步驟:開始--控制面板--網路連接---寬頻(你起的寬頻連接名)--屬性--選項--去掉《連接時顯示進度》和提示名稱、密碼和證書》前的勾即可。
問題四:win8系統的電腦怎麼設置網路連接 1、把滑鼠在桌面上移動到屏幕右邊的上角或者下角,看到彈出的設置界面後點擊【設置】,屏幕的右側會彈出下面的窗口。
2、點擊控制面板
3、點擊控制面板後會出現下面的窗口,點擊【網路和Internet】。
4、點擊進入以後,在點擊【網路和共享中心】。
5、然後直接點擊【創建新的連接或網路】。
6、然後更具提示,選擇,下一步。剩下的和win8以前的系統連接設置都差不多了。
問題五:聯想電腦怎麼添加網路連接 建議您按照以下步驟進行寬頻連接
1、點開始菜單――所有程序――附件――通訊――新建連接向導
2、網路連接類型:選擇1,連接到Internet
3、選擇2,手動設置我的連接
4、選擇2,用要求用戶名和密碼的寬頻來連接
5、ISP名稱,自己隨便設,設定的名稱以後就是在桌面上顯示的快捷方式名稱
6、用戶名、密碼,填你申請寬頻時給你的原始用戶名,密碼
問題六:怎麼設置電腦始終保持網路連接不斷開啊 寬頻設置成 從不斷開 桌面空白處右鍵 屬性 電源 待機那裡設置成從不就可以了
問題七:電腦直接插網線上網怎麼設置? 你將寬頻連接在Internet工具中連接的默認撥號連接關掉。然後,到本地連接屬性中,找到Internet協議(TCP/IP)屬性中將自動獲得IP地址打上勾。最後點擊確定這樣一切就OK了。
問題八:我換了電腦,怎樣在電腦上設置寬頻連接? 您需要先安裝好寬頻 MODEM,通過網線連接好電腦主機。如果您使用的是Windows系統。可通過以下步驟設置寬頻連接:點擊開始菜單,選擇 程序->附件->通訊->新建連接向導,按步驟設置即可:1)網路連接類型:選擇「連接到Internet」;2)怎麼連接到Internet:選擇「手動設置我的連接」;3)Internet連接:選擇「用要求用戶名和密碼的寬頻鏈接來連接」;4)連接名:填寫連接名稱,可自動命名;5)Internet帳戶信息:填寫ADSL寬頻 帳號、密碼,請注意區分大小寫字母。填寫好帳號、密碼後點擊下一步,將「在我桌面上添加一個到此連接的謝謝您對電信產品的關注,祝您生活愉快。 如果以上信息沒有解決您的問題,也可登錄廣東處信手機商城(m.gd.189),向在線客服求助,7X24小時在線喔!
問題九:怎麼設置電腦優先連接有線網路 打開控制面板,選擇「網路和共享中心」選項。打開「更改適配器設置」選項、按「Alt」鍵調出菜單欄 點擊「高級」選項,並選擇「高級設置」 5、在「適配器和綁定」菜單下,選擇網路並點擊右邊的綠色箭頭設置優先順序,再點擊「確定」保存設置。 好了,這樣設置後就可以按照你設置的順序進行網路鏈接了。
問題十:電腦wifi連接怎麼設置成寬頻連接 一.雙擊打開網上鄰居--在左側欄點查看網路連接--創建一個新的連接:
1.新建連接向導 ,打開「歡迎使用新建連接向導」界面--「下一步」 ;
2.選擇「連接到Internet」--「下一步」;
3.選擇「手動設置我的連接」--「下一步」;
4.選擇「用要求用戶名和密碼的寬頻連接來連接」--「下一步」;
5.在「ISP名稱文本框中輸入名稱「**(《寬頻連接》或《網路連接》)」--「下一步」;
6.)在「用戶名」文本框中輸入所使用的用名稱(ADSL賬號),在「密碼」文本框中輸入密碼,在「確認密碼」文本框中重復輸入密碼確認,勾選「任何用戶從這台計算機連接到Internet使用此帳戶名和密碼」和「把它做為默認Internet連接」―下一步;
7.勾選「在我的桌面上添加一個到此連接的快捷方式」―單擊「完成」後,會看到桌面上多了個名為「**(《寬頻連接》或《網路連接》」的連接圖標。
二.設置連接屬性
(1)本地連接:開始―連接到―顯示所有連接―右擊本地連接―屬性―常規―點選Internet協議(TCP/IP)--屬性―點選使用下面的IP地址(設置固定IP,可以加快網路連接速度,供參考):
IP地址:192.168.0.2
子網掩碼:255.255.255.0
默認網關:192.168.0.1。
使用下面的DNS伺服器地址(供參考):
首選:1.1.1.1
備用:24.24.24.24
最後點擊確定。
或者不設置固定IP,勾選自動獲得IP地址(網路連接速度相對設置固定IP會慢一些)--確定。
(2)寬頻連接:右擊寬頻連接―屬性―網路―選自動獲得IP地址―確定。
❸ 【計算機網路】http協議的持久連接的非流水線方式和非持久連接有區別么
有區別。
非持續連接是每訪問一個對象就要建立一次TCP連接,TCP連接的三次握手加上HTTP的響應報文總共所需時間是2RTT,文件傳送結束後斷開TCP連接。
而持續連接的非流水線方式特點是(既然是持續連接TCP連接就不斷開),每訪問一個對象要等到收到前一個響應後才能發出下一個請求,因此客戶每訪問一個對象要用去一個RTT時間。
綜上,持續連接的非流水線方式比非持續連接節省了建立TCP連接的一個RTT時間。