日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络编程2_网络通讯协议, socket(tcp, udp)

發(fā)布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络编程2_网络通讯协议, socket(tcp, udp) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?一. 網(wǎng)絡(luò)通訊協(xié)議
????互聯(lián)網(wǎng)協(xié)議的功能: 定義計算機如何接入internet, 以及接入internet的計算機的通信標準
????互聯(lián)網(wǎng)協(xié)議按照功能的不同分為osi七層或tcp/ip五層
????osi七層: 應(yīng)用層, 表示層, 會話層, 傳輸層, 網(wǎng)絡(luò)層, 數(shù)據(jù)鏈接層, 物理層
????tcp/ip五層: 應(yīng)用層, 傳輸層, 網(wǎng)絡(luò)層, 數(shù)據(jù)鏈接層, 物理層
????各層中涉及的協(xié)議的簡單解釋:
????1.?應(yīng)用層?
????  · DHCP (Dynamic Host Configuration Protocol) 動態(tài)主機分配協(xié)議
????  · DNS (Domain Name System) 域名系統(tǒng)(域名解析)
????  · FTP(File Transfer Protocol)文件傳輸協(xié)議
????  · Gopher (英文原義:The Internet Gopher Protocol 中文釋義:(RFC-1436)網(wǎng)際Gopher協(xié)議)
????  · HTTP (Hypertext Transfer Protocol)超文本傳輸協(xié)議
????  · IMAP4 (Internet Message Access Protocol 4) 即 Internet信息訪問協(xié)議的第4版本
????  · IRC (Internet Relay Chat )網(wǎng)絡(luò)聊天協(xié)議
????  · NNTP (Network News Transport Protocol)RFC-977)網(wǎng)絡(luò)新聞傳輸協(xié)議
????  · XMPP 可擴展消息處理現(xiàn)場協(xié)議
????  · POP3 (Post Office Protocol 3)即郵局協(xié)議的第3個版本
????  · SIP 信令控制協(xié)議
????  · SMTP (Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議
????  · SNMP (Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議)
????  · SSH (Secure Shell)安全外殼協(xié)議
????  · TELNET 遠程登錄協(xié)議
????  · RPC (Remote Procedure Call Protocol)(RFC-1831)遠程過程調(diào)用協(xié)議
????  · RTCP (RTP Control Protocol)RTP 控制協(xié)議
????  · RTSP (Real Time Streaming Protocol)實時流傳輸協(xié)議
????  · TLS (Transport Layer Security Protocol)安全傳輸層協(xié)議
????  · SDP( Session Description Protocol)會話描述協(xié)議
????  · SOAP (Simple Object Access Protocol)簡單對象訪問協(xié)議
????  · GTP 通用數(shù)據(jù)傳輸平臺
????  · STUN (Simple Traversal of UDP over NATs,NAT 的UDP簡單穿越)是一種網(wǎng)絡(luò)協(xié)議
????  · NTP (Network Time Protocol)網(wǎng)絡(luò)校時協(xié)議
????2.?傳輸層
????  · TCP(Transmission Control Protocol)傳輸控制協(xié)議
????  · UDP (User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議
????  · DCCP (Datagram Congestion Control Protocol)數(shù)據(jù)報擁塞控制協(xié)議
????  · SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制傳輸協(xié)議
????  · RTP(Real-time Transport Protocol或簡寫RTP)實時傳送協(xié)議
????  · RSVP (Resource ReSer Vation Protocol)資源預留協(xié)議
????  · PPTP ( Point to Point Tunneling Protocol)點對點隧道協(xié)議
????3.?網(wǎng)絡(luò)層
????????IP(IPv4 · IPv6) Internet Protocol(網(wǎng)絡(luò)之間互連的協(xié)議)
????????ARP : Address Resolution Protocol即地址解析協(xié)議,實現(xiàn)通過IP地址得知其物理地址。
????????RARP :Reverse Address Resolution Protocol 反向地址轉(zhuǎn)換協(xié)議允許局域網(wǎng)的物理機器從網(wǎng)關(guān)服務(wù)器的 ARP 表或者緩存上請求其 IP 地址。
????????ICMP :(Internet Control Message Protocol)Internet控制報文協(xié)議。它是TCP/IP協(xié)議族的一個子協(xié)議,用于在IP主機、路由器之間傳遞控制消息。
????????ICMPv6:
????????IGMP :Internet 組管理協(xié)議(IGMP)是因特網(wǎng)協(xié)議家族中的一個組播協(xié)議,用于IP 主機向任一個直接相鄰的路由器報告他們的組成員情況。
????????RIP : 路由信息協(xié)議(RIP)是一種在網(wǎng)關(guān)與主機之間交換路由選擇信息的標準。
????????OSPF : (Open Shortest Path First開放式最短路徑優(yōu)先).
????????BGP :(Border Gateway Protocol )邊界網(wǎng)關(guān)協(xié)議,用來連接Internet上獨立系統(tǒng)的路由選擇協(xié)議
????????IS-IS:(Intermediate System to Intermediate System Routing Protocol)中間系統(tǒng)到中間系統(tǒng)的路由選擇協(xié)議.
????????IPsec:“Internet 協(xié)議安全性”是一種開放標準的框架結(jié)構(gòu),通過使用加密的安全服務(wù)以確保在 Internet 協(xié)議 (IP) 網(wǎng)絡(luò)上進行保密而安全的通訊。
????4.?數(shù)據(jù)鏈路層
????  802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌環(huán) · 以太網(wǎng) · FDDI · 幀中繼 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
????5.?物理層
????  以太網(wǎng)物理層 · 調(diào)制解調(diào)器 · PLC · SONET/SDH · G.709 · 光導纖維 · 同軸電纜 · 雙絞線
二. tcp/ip五層模型詳解
????搞清楚了每層的協(xié)議, 就搞清楚了每層的主要協(xié)議
????每層都運行特定的協(xié)議, 越往上越靠近用戶, 越往下越靠近硬件
????1.?物理層
????物理層功能: 主要是基于電器特性發(fā)送高低電壓(電信號), 高電壓對應(yīng)數(shù)字1, 低電壓對應(yīng)數(shù)字0
????2.?數(shù)字鏈路層
????由來: 單純的電信號0和1沒有任何意義, 必須規(guī)定電信號多少位一組, 每組什么意思
????數(shù)據(jù)鏈路層功能: 定義了電信號的分組方式
????(1). 以太網(wǎng)(ethernet3)協(xié)議:??
????一組電信號構(gòu)成一個數(shù)據(jù)包, 叫做幀, 每一數(shù)據(jù)幀分成: 報頭head 和 數(shù)據(jù)data兩部分
????head包括: (固定18個字節(jié)), 發(fā)送者(源地址)6個字節(jié), 接受者(目標地址)6個字節(jié), 數(shù)據(jù)類型6個字節(jié)
????data包括: 最短46個字節(jié), 最長1500個字節(jié)
????數(shù)據(jù)包的具體內(nèi)容: head長度 + data長度 = 最短64個字節(jié), 最長1518個字節(jié), 超過最大限制就分片發(fā)送
????(2). mac地址:
????head中包含的源和目標地址的由來: ethernet規(guī)定接入internet的設(shè)備都必須具備網(wǎng)卡, 發(fā)送端和接收端的地址便是指網(wǎng)卡的地址, 即mac地址
????mac地址: 每塊網(wǎng)卡出廠的時候都被燒制上一個世界上唯一的mac地址, 長度為48位2進制, 通常由12位16進制數(shù)表示(前6位是廠商編號, 后六位是流水線號)
????(3). 廣播:
????arp協(xié)議: 通過ip地址獲得mac地址
????以太網(wǎng)采用最簡單的方式, 廣播的方式進行通信, 即計算機基本靠吼
????3.?網(wǎng)絡(luò)層
????世界大網(wǎng)絡(luò)由一個個小的彼此隔離的局域網(wǎng)組成, 以太網(wǎng)包只能在一個局域網(wǎng)內(nèi)發(fā)送, 一個局域網(wǎng)是一個廣播域, 以太網(wǎng)的廣播包只能在一個廣播域內(nèi)發(fā)送, 跨廣播域的通信只能由路由轉(zhuǎn)發(fā)
????網(wǎng)絡(luò)層功能: 引入一套新的地址來區(qū)分不同的廣播域/子網(wǎng), 這套地址即網(wǎng)絡(luò)地址
????(1). ip協(xié)議:
????規(guī)定網(wǎng)絡(luò)地址的協(xié)議, 它定義的地址叫ip地址, 廣泛采用的是ipv4, 它規(guī)定網(wǎng)絡(luò)地址由32位2進制表示
????范圍0.0.0.0 - 255.255.255.255 (4個點分十進制, 也就是4個8位二進制數(shù))
????ipv6: 6個冒號分割的16進制數(shù)表示, 預防ipv4地址不夠用的情況, 但是ipv4目前還是夠用的, 因為我們一個公司一般就一個對外的ip地址, 我們所有的機器上網(wǎng)都走這一個ip出口
????ip地址分為兩部分: 網(wǎng)絡(luò)部分: 標識子網(wǎng), 主機部分: 標識主機
????單純的ip地址段只是標識了ip地址的種類, 從網(wǎng)絡(luò)部分和主機部分都無法辨識一個ip所處的子網(wǎng)
????子網(wǎng)掩碼: 表示之網(wǎng)絡(luò)特征的一個參數(shù), 它的形式上等同于ip地址, 一個一個32位二進制數(shù), 它的網(wǎng)絡(luò)部分全部為1, 主機部分全部為0, 寫成十進制就是255.255.255.0, 利用子網(wǎng)掩碼就能判斷任意兩個ip地址是否處在同一個字網(wǎng)絡(luò), 方法是將兩個ip地址和子網(wǎng)掩碼分別進行AND運算, 然后比較結(jié)果是否相同, 如果相同就在同一個之網(wǎng)絡(luò)中
????總結(jié)一下: ip地址的作用主要有兩個, 一個是為每一臺電腦分配ip地址, 另一個是確定哪些地址在同一個子網(wǎng)絡(luò)
????ip數(shù)據(jù)包:?
????ip數(shù)據(jù)包也分為head和data部分, 無需為ip包定義單獨的欄位, 直接放入以太網(wǎng)包的head部分
????head最長為20到60個字節(jié), data最長為65515個字節(jié), 因此, 如果ip數(shù)據(jù)包超過了1500個字節(jié), 就要被分割成幾個以太網(wǎng)數(shù)據(jù)包分開發(fā)送
????(2). arp協(xié)議: 地址解析協(xié)議(Address Resolution Protocol)是根據(jù)IP地址獲取物理地址的一個TCP/IP協(xié)議
????以官廣播的形式發(fā)送數(shù)據(jù)包, 獲取到目標主機的mac地址
????4.?傳輸層
????傳輸層的功能: 建立端口到端口的通信(端對端通信)
????通過ip和mac找到了一臺特定的主機(網(wǎng)絡(luò)層的ip幫我們區(qū)分子網(wǎng), 以太網(wǎng)層的mac幫我們找到主機碼), 但是如何標識這臺主機上的應(yīng)用程序, 答案就是端口, 端口即應(yīng)用程序與網(wǎng)卡關(guān)聯(lián)的編號
????端口范圍0-65535, 0-1023為系統(tǒng)占用端口
?????127.0.0.1就是本機程序之間進行通信的地址, 這叫本機的回環(huán)地址, 測試的時候模擬客戶端和服務(wù)端
????(1). tcp協(xié)議: 傳輸控制協(xié)議
????tcp把連接作為最基本的對象, 每一條tcp連接都有兩個端點, 這種端點叫做套接字(socket), 它的定義為端口號拼接到ip地址即構(gòu)成了套接字,?
????面向連接, 可靠傳輸, 保證送達, 安全性高, 提供超時重發(fā), 丟棄重復數(shù)據(jù), 檢驗數(shù)據(jù), 流量控制等功能?
????tcp數(shù)據(jù)包沒有長度限制, 理論上可以無限長, 但是為了保證網(wǎng)絡(luò)的效率, 通常tcp數(shù)據(jù)包的長度不會超過ip數(shù)據(jù)包的長度,
????(2). udp協(xié)議: 用戶數(shù)據(jù)包協(xié)議?
????面向數(shù)據(jù)包, 不可靠傳輸, 只負責發(fā)送, 不保證送達, 速度快, 安全性差?
????報頭部分一共只有8個字節(jié), 總長度不超過65535個字節(jié), 正好放進一個數(shù)據(jù)包
????(3). tcp三次握手和四次揮手
????ip協(xié)議雖然能把數(shù)據(jù)報文送到目的主機, 但是并沒有交付給主機的具體應(yīng)用進程, 二端到端的通信才應(yīng)該是應(yīng)用進程之間的通信
????三次握手:
????① TCP服務(wù)器進程先創(chuàng)建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務(wù)器就進入了LISTEN(監(jiān)聽)狀態(tài);
????② TCP客戶進程也是先創(chuàng)建傳輸控制塊TCB,然后向服務(wù)器發(fā)出連接請求報文,這是報文首部中的同部位SYN=1,同時選擇一個初始序列號 seq=x ,此時,TCP客戶端進程進入了 SYN-SENT(同步已發(fā)送狀態(tài))狀態(tài)。TCP規(guī)定,SYN報文段(SYN=1的報文段)不能攜帶數(shù)據(jù),但需要消耗掉一個序號。
????③ TCP服務(wù)器收到請求報文后,如果同意連接,則發(fā)出確認報文。確認報文中應(yīng)該 ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號 seq=y,此時,TCP服務(wù)器進程進入了SYN-RCVD(同步收到)狀態(tài)。這個報文也不能攜帶數(shù)據(jù),但是同樣要消耗一個序號。
????④ TCP客戶進程收到確認后,還要向服務(wù)器給出確認。確認報文的ACK=1,ack=y+1,自己的序列號seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態(tài)。TCP規(guī)定,ACK報文段可以攜帶數(shù)據(jù),但是如果不攜帶數(shù)據(jù)則不消耗序號。
????⑤ 當服務(wù)器收到客戶端的確認后也進入ESTABLISHED狀態(tài),此后雙方就可以開始通信了。?
????四次揮手:
????數(shù)據(jù)傳輸完畢后,雙方都可釋放連接。最開始的時候,客戶端和服務(wù)器都是處于ESTABLISHED狀態(tài),然后客戶端主動關(guān)閉,服務(wù)器被動關(guān)閉。服務(wù)端也可以主動關(guān)閉,一個流程。
????①. 客戶端進程發(fā)出連接釋放報文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報文首部,FIN=1,其序列號為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個字節(jié)的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,FIN報文段即使不攜帶數(shù)據(jù),也要消耗一個序號。
????②. 服務(wù)器收到連接釋放報文,發(fā)出確認報文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑杝eq=v,此時,服務(wù)端就進入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)。TCP服務(wù)器通知高層的應(yīng)用進程,客戶端向服務(wù)器的方向就釋放了,這時候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但是服務(wù)器若發(fā)送數(shù)據(jù),客戶端依然要接受。這個狀態(tài)還要持續(xù)一段時間,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間。
????③. 客戶端收到服務(wù)器的確認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))。
????④. 服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送連接釋放報文,FIN=1,ack=u+1,由于在半關(guān)閉狀態(tài),服務(wù)器很可能又發(fā)送了一些數(shù)據(jù),假定此時的序列號為seq=w,此時,服務(wù)器就進入了LAST-ACK(最后確認)狀態(tài),等待客戶端的確認。
????⑤. 客戶端收到服務(wù)器的連接釋放報文后,必須發(fā)出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)。注意此時TCP連接還沒有釋放,必須經(jīng)過2??MSL(最長報文段壽命)的時間后,當客戶端撤銷相應(yīng)的TCB后,才進入CLOSED狀態(tài)。
????⑥. 服務(wù)器只要收到了客戶端發(fā)出的確認,立即進入CLOSED狀態(tài)。同樣,撤銷TCB后,就結(jié)束了這次的TCP連接。可以看到,服務(wù)器結(jié)束TCP連接的時間要比客戶端早一些。
????5.?應(yīng)用層
????應(yīng)用層功能: 規(guī)定應(yīng)用程序的數(shù)據(jù)格式
????例:TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如Email、WWW、FTP等等。那么,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁、FTP數(shù)據(jù)的格式,這些應(yīng)用程序協(xié)議就構(gòu)成了”應(yīng)用層”。
????6.?socket
????我們知道IP層的ip地址可以唯一標示主機,而TCP層協(xié)議和端口號可以唯一標示主機的一個進程,這樣我們可以利用ip地址+協(xié)議+端口號唯一標示網(wǎng)絡(luò)中的一個進程。
????能夠唯一標示網(wǎng)絡(luò)中的進程后,它們就可以利用socket進行通信了,什么是socket呢?我們經(jīng)常把socket翻譯為套接字,socket是在應(yīng)用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應(yīng)用層調(diào)用以實現(xiàn)進程在網(wǎng)絡(luò)中通信。
????socket起源于UNIX,在Unix一切皆文件哲學的思想下,socket是一種"打開—讀/寫—關(guān)閉"模式的實現(xiàn),服務(wù)器和客戶端各自維護一個"文件",在建立連接打開后,可以向自己文件寫入內(nèi)容供對方讀取或者讀取對方內(nèi)容,通訊結(jié)束時關(guān)閉文件。
三. 網(wǎng)絡(luò)通信實現(xiàn)
????想實現(xiàn)網(wǎng)絡(luò)通信, 每臺主機需具備四要素: 本機的ip地址, 子網(wǎng)掩碼, 網(wǎng)管的ip地址, dns的ip地址
????獲取這四要素有兩種方式: 1. 靜態(tài)獲取: 即手動配置, 2. 動態(tài)獲取: 通過dhcp獲取
四. 結(jié)合協(xié)議來看網(wǎng)絡(luò)通信流程
????1.本機獲取
????本機的IP地址:192.168.1.100
????子網(wǎng)掩碼:255.255.255.0
????網(wǎng)關(guān)的IP地址:192.168.1.1
????DNS的IP地址:8.8.8.8
????2.打開瀏覽器,想要訪問Google,在地址欄輸入了網(wǎng)址:www.google.com。
????3.dns協(xié)議(基于udp協(xié)議)
????域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html
????頂級域名:以.com,.net,.org,.cn等等屬于國際頂級域名,根據(jù)目前的國際互聯(lián)網(wǎng)域名體系,國際頂級域名分為兩類:類別頂級域名(gTLD)和地理頂級域名(ccTLD)兩種。類別頂級域名是        ????????????以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結(jié)尾的域名,均由國外公司負責管理。地理頂級域名是以國家或地區(qū)代碼為結(jié)尾的域名,如"CN"代表中國,"UK"代表英國。地理頂級域名一般由各個國家或地區(qū)負責管理。
????二級域名:二級域名是以頂級域名為基礎(chǔ)的地理域名,比喻中國的二級域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
????一般來說,二級域名是域名的一條記錄,比如alidiedie.com是一個域名,www.alidiedie.com是其中比較常用的記錄,一般默認是用這個,但是類似*.alidiedie.com的域名全部稱作是alidiedie.com的二級
????4.HTTP部分的內(nèi)容,類似于下面這樣:
????GET / HTTP/1.1
????Host: www.google.com
????Connection: keep-alive
????User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
????Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
????Accept-Encoding: gzip,deflate,sdch
????Accept-Language: zh-CN,zh;q=0.8
????Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
????Cookie: … …
????我們假定這個部分的長度為4960字節(jié),它會被嵌在TCP數(shù)據(jù)包之中。
????5.?TCP協(xié)議
????TCP數(shù)據(jù)包需要設(shè)置端口,接收方(Google)的HTTP端口默認是80,發(fā)送方(本機)的端口是一個隨機生成的1024-65535之間的整數(shù),假定為51775。
????TCP數(shù)據(jù)包的標頭長度為20字節(jié),加上嵌入HTTP的數(shù)據(jù)包,總長度變?yōu)?980字節(jié)。
  6.?IP協(xié)議
????然后,TCP數(shù)據(jù)包再嵌入IP數(shù)據(jù)包。IP數(shù)據(jù)包需要設(shè)置雙方的IP地址,這是已知的,發(fā)送方是192.168.1.100(本機),接收方是172.194.72.105(Google)。
????IP數(shù)據(jù)包的標頭長度為20字節(jié),加上嵌入的TCP數(shù)據(jù)包,總長度變?yōu)?000字節(jié)。
  7.?以太網(wǎng)協(xié)議
????最后,IP數(shù)據(jù)包嵌入以太網(wǎng)數(shù)據(jù)包。以太網(wǎng)數(shù)據(jù)包需要設(shè)置雙方的MAC地址,發(fā)送方為本機的網(wǎng)卡MAC地址,接收方為網(wǎng)關(guān)192.168.1.1的MAC地址(通過ARP協(xié)議得到)。
????以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)部分,最大長度為1500字節(jié),而現(xiàn)在的IP數(shù)據(jù)包長度為5000字節(jié)。因此,IP數(shù)據(jù)包必須分割成四個包。因為每個包都有自己的IP標頭(20字節(jié)),所以四個包的IP數(shù)據(jù)包的長度分別為1500、1500、1500、560。
  8.?服務(wù)器端響應(yīng)
????經(jīng)過多個網(wǎng)關(guān)的轉(zhuǎn)發(fā),Google的服務(wù)器172.194.72.105,收到了這四個以太網(wǎng)數(shù)據(jù)包。
????根據(jù)IP標頭的序號,Google將四個包拼起來,取出完整的TCP數(shù)據(jù)包,然后讀出里面的”HTTP請求”,接著做出”HTTP響應(yīng)”,再用TCP協(xié)議發(fā)回來。
????本機收到HTTP響應(yīng)以后,就可以將網(wǎng)頁顯示出來,完成一次網(wǎng)絡(luò)通信。
五. 基于TCP和UDP兩個協(xié)議下SOCKET的通訊流程
????1.?對比:?
????TCP(Transmission Control Protocol)可靠的、面向連接的協(xié)議(eg:打電話)、傳輸效率低全雙工通信(發(fā)送緩存&接收緩存)、面向字節(jié)流。使用TCP的應(yīng)用:Web瀏覽器;文件傳輸程序。
????UDP(User Datagram Protocol)不可靠的、無連接的服務(wù),傳輸效率高(發(fā)送前時延小),一對一、一對多、多對一、多對多、面向報文(數(shù)據(jù)包),盡最大努力服務(wù),無擁塞控制。使用UDP的應(yīng)用:域名系統(tǒng) (DNS);視頻流;IP語音(VoIP)。
????2.?tcp協(xié)議下的socket
????先從服務(wù)器端說起。服務(wù)器端先初始化Socket,然后與端口綁定(bind),對端口進行監(jiān)聽(listen),調(diào)用accept阻塞,等待客戶端連接。在這時如果有個客戶端初始化一個Socket,然后連接服務(wù)器(connect),如果連接成功,這時客戶端與服務(wù)器端的連接就建立了。客戶端發(fā)送數(shù)據(jù)請求,服務(wù)器端接收請求并處理請求,然后把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),最后關(guān)閉連接,一次交互結(jié)束
????但是socket綁定ip和端口時可能出現(xiàn)下面的問題: OSError: [Error 48] Address already in use
? ??

轉(zhuǎn)載于:https://www.cnblogs.com/guyannanfei/p/10217552.html

總結(jié)

以上是生活随笔為你收集整理的网络编程2_网络通讯协议, socket(tcp, udp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。