網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))_第1頁(yè)
網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))_第2頁(yè)
網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))_第3頁(yè)
網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))_第4頁(yè)
網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)(網(wǎng)絡(luò)編程技術(shù)基礎(chǔ))前言本文主要介紹的是C語(yǔ)言網(wǎng)絡(luò)編程基礎(chǔ),介紹一些網(wǎng)絡(luò)常識(shí),這希望對(duì)于廣大讀者學(xué)習(xí)C/C++有一些幫助。更多淺顯的C語(yǔ)言、C++,windows知識(shí),持續(xù)關(guān)注我吧!什么是socket?Socket的英文原義是“孔”或“插座”。在編程中,Soc

前言

本文主要介紹的是C語(yǔ)言網(wǎng)絡(luò)編程基礎(chǔ),介紹一些網(wǎng)絡(luò)常識(shí),這希望對(duì)于廣大讀者學(xué)習(xí)C/C++有一些幫助。更多淺顯的C語(yǔ)言、C++,windows知識(shí),持續(xù)關(guān)注我吧!

什么是socket?

Socket的英文原義是“孔”或“插座”。在編程中,Socket被稱(chēng)做套接字,是網(wǎng)絡(luò)通信中的一種約定。Socket編程的應(yīng)用無(wú)處不在,我們平時(shí)用的、微信、瀏覽器等程序,都與Socket編程有關(guān)。我們平時(shí)使用瀏覽器查資料,這個(gè)過(guò)程的技術(shù)原理是怎樣的呢?

我們平時(shí)使用瀏覽器,大致就是這樣的一個(gè)過(guò)程。這里有兩個(gè)重要的名詞:服務(wù)端與客戶(hù)端。

Socket編程的目的就是如何實(shí)現(xiàn)這兩端之間的通信。

Socket編程在編程開(kāi)發(fā)中很重要

Socket編程不僅僅在互聯(lián)網(wǎng)方面很重要,在我們的嵌入式方面也是非常的重要,因?yàn)楝F(xiàn)在很多電子設(shè)備都趨向于聯(lián)網(wǎng)。比如很多編程行業(yè)的招聘要求都會(huì)有這一條要求:

說(shuō)一點(diǎn)題外話(huà),還在學(xué)校的朋友,如果感覺(jué)到很迷茫,不知道學(xué)什么的時(shí)候,可以上招聘網(wǎng)站上看看自己未來(lái)工作相關(guān)的職位的任職要求,這樣就可以總結(jié)自己的一些不足、比較有針對(duì)性的去學(xué)習(xí)。

Socket編程中的幾個(gè)重要概念

Socket編程用于解決我們客戶(hù)端與服務(wù)端之間通信的問(wèn)題。我們平時(shí)多多少少都有聽(tīng)過(guò)IP地址、端口、TCP協(xié)議、UDP協(xié)議等概念,這些都與Socket編程中相關(guān),想要知道怎么用起來(lái),當(dāng)然得先了解它們的一些介紹。下面看一下這些專(zhuān)業(yè)術(shù)語(yǔ)的一些要點(diǎn)介紹:

1、什么是IP地址?

IP地址(InternetProtocolAddress)是指互聯(lián)網(wǎng)協(xié)議地址,又譯為網(wǎng)際協(xié)議地址。IP地址被用來(lái)給Internet上的電腦一個(gè)編號(hào)。我們可以把“個(gè)人電腦”比作“一臺(tái)電話(huà)”,那么“IP地址”就相當(dāng)于“電話(huà)號(hào)碼”。若計(jì)算機(jī)1知道計(jì)算機(jī)2的IP地址,則計(jì)算機(jī)1就能訪問(wèn)計(jì)算機(jī)2。

IP地址是一個(gè)32位的二進(jìn)制數(shù),通常被分割為4個(gè)“8位二進(jìn)制數(shù)”(也就是4個(gè)字節(jié))。IP地址通常用點(diǎn)分十進(jìn)制表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù)。例:點(diǎn)分十進(jìn)IP地址(),實(shí)際上是32位二進(jìn)制數(shù)(01100100.00000100.00000101.00000110)。

IP地址有IPv4與IPv6之分,現(xiàn)在用得較多的是IPv4。其中,有一個(gè)特殊的IP地址需要我們記?。海@是回送地址,即本地機(jī),一般用來(lái)測(cè)試使用。后邊我們的實(shí)例中會(huì)用到。

關(guān)于IP地址還有很多知識(shí)要點(diǎn),但是對(duì)于在Socket編程中的應(yīng)用,我們暫且知道這么多就可以。

2、什么是TCP/IP端口?

上一點(diǎn)中我們提到,若計(jì)算機(jī)1知道計(jì)算機(jī)2的IP地址,則計(jì)算機(jī)1就能訪問(wèn)計(jì)算機(jī)2。但是,我們要訪問(wèn)計(jì)算機(jī)2中的不同的應(yīng)用軟件,則還得需要一個(gè)信息:端口。端口使用16bit進(jìn)行編號(hào),即其范圍為:0~65536。但0~1023的端口一般由系統(tǒng)分配給特定的服務(wù)程序,例如Web服務(wù)的端口號(hào)為80,F(xiàn)TP服務(wù)的端口號(hào)為21等。

3、什么是協(xié)議?

協(xié)議(Protocol)是通信雙方進(jìn)行數(shù)據(jù)交互的一種約定。如TCP、UDP協(xié)議:

TCP協(xié)議

TCP(TransmissionControlProtocol傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,數(shù)據(jù)可以準(zhǔn)確發(fā)送,數(shù)據(jù)丟失會(huì)重發(fā)。TCP協(xié)議常用于web應(yīng)用中。

TCP連接(三次握手)

TCP傳輸起始時(shí),客戶(hù)端、服務(wù)端要完成三次數(shù)據(jù)交互工作才能建立連接,常稱(chēng)為三次握手。可形象比喻為如下對(duì)話(huà):

具體示意圖為:

這里的SYN和ACK是都是標(biāo)志位,其中SYN代表新建一個(gè)連接,ACK代表確認(rèn)。其中m、n都是隨機(jī)數(shù)。具體說(shuō)明如:

第一次握手:SYN標(biāo)志位被置位,客戶(hù)端向服務(wù)端發(fā)送一個(gè)隨機(jī)數(shù)m。第二次握手:ACK、SYN標(biāo)志位被置位。服務(wù)端向客戶(hù)端發(fā)送m+1表示確認(rèn)剛才收到的數(shù)據(jù),同時(shí)向客戶(hù)端發(fā)送一個(gè)隨機(jī)數(shù)n。第三次握手:ACK標(biāo)志被置位??蛻?hù)端向服務(wù)端發(fā)送n+1表示確認(rèn)收到數(shù)據(jù)。TCP斷開(kāi)(四次揮手)

TCP斷開(kāi)連接時(shí),客戶(hù)端、服務(wù)端要完成四次數(shù)據(jù)交互工作才能建立連接,常稱(chēng)為四次揮手??尚蜗蟊扔鳛槿缦聦?duì)話(huà):

具體示意圖為:

這里的FIN也是一個(gè)標(biāo)志位,代表斷開(kāi)連接。具體說(shuō)明類(lèi)似三次握手。

為什么建立連接只需要三次數(shù)據(jù)交互,而斷開(kāi)連接需要四次呢?

建立連接時(shí),服務(wù)端在監(jiān)聽(tīng)狀態(tài)下,收到建立連接請(qǐng)求的SYN報(bào)文后,把ACK和SYN放在一個(gè)報(bào)文里發(fā)送給客戶(hù)端。

而關(guān)閉連接時(shí),當(dāng)收到對(duì)方的FIN報(bào)文時(shí),僅僅表示對(duì)方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對(duì)方了,所以己方可以立即close,也可以發(fā)送一些數(shù)據(jù)給對(duì)方后,再發(fā)送FIN報(bào)文給對(duì)方來(lái)表示同意現(xiàn)在關(guān)閉連接,因此,己方ACK和FIN一般都會(huì)分開(kāi)發(fā)送。

UDP協(xié)議

UDP(UserDatagramProtocol,用戶(hù)數(shù)據(jù)報(bào)協(xié)議)是一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),可以保證通訊效率,傳輸延時(shí)小。例如視頻聊天應(yīng)用中用的就是UDP協(xié)議,這樣可以保證及時(shí)丟失少量數(shù)據(jù),視頻的顯示也不受很大影響。

4、什么是協(xié)議族?

協(xié)議族是多個(gè)協(xié)議的統(tǒng)稱(chēng)。比如我們的TCP/IP協(xié)議族,其不僅僅是TCP協(xié)議、IP協(xié)議,而是多個(gè)協(xié)議的集合,其包含IP、TCP、UDP、FTP、SMTP等協(xié)議。

TCP、UDP通信的socket編程過(guò)程圖

(1)TCP通信socket編程過(guò)程

(2)UDP通信socket編程過(guò)程

尾言

由于篇幅問(wèn)題,關(guān)于socket的編程應(yīng)用實(shí)例敬請(qǐng)期待,文章都是手打原創(chuàng),每天最淺顯的介紹C語(yǔ)言、C++,windows知識(shí),喜歡我的文章就關(guān)注一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論