亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

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

什么是socket?

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

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

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

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

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

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

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

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

Socket編程中的幾個重要概念

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

1、什么是IP地址?

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

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

IP地址有 IPv4與 IPv6之分,現(xiàn)在用得較多的是IPv4。其中,有一個特殊的IP地址需要我們記住: 127.0.0.1,這是回送地址,即本地機,一般用來測試使用。后邊我們的實例中會用到。

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

2、什么是TCP/IP端口?

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

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

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

TCP協(xié)議

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

TCP連接(三次握手)

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

客戶端:服務(wù)端您好,我有數(shù)據(jù)要發(fā)給你,請求您開通訪問權(quán)限。

服務(wù)端:客戶端您好,已給您開通權(quán)限,您可以發(fā)送數(shù)據(jù)了。

客戶端:收到,謝謝。

具體示意圖為:

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

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

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

TCP斷開(四次揮手)

TCP斷開連接時,客戶端、服務(wù)端要完成四次數(shù)據(jù)交互工作才能建立連接,常稱為四次揮手。可形象比喻為如下對話:

客戶端:服務(wù)端您好,我發(fā)送數(shù)據(jù)完畢了,即將和您斷開連接。

服務(wù)端:客戶端您好,我稍稍準(zhǔn)備一下,再給您斷開

服務(wù)端:客戶端您好,我準(zhǔn)備好了,您可以斷開連接了。

客戶端:好的,合作愉快!

具體示意圖為:

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

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

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

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

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

UDP協(xié)議

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

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

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

TCP、UDP通信的socket編程過程圖

(1)TCP通信socket編程過程

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

(2)UDP通信socket編程過程

數(shù)據(jù)如何在網(wǎng)絡(luò)上傳輸?掌握這些小知識,編程將不再呆板無趣

 

尾言

由于篇幅問題,關(guān)于socket的編程應(yīng)用實例敬請期待,文章都是手打原創(chuàng),每天最淺顯的介紹C語言、C++,windows知識,喜歡我的文章就關(guān)注一波吧,每天帶你學(xué)習(xí)C/C++不同的知識,也可以看到最新更新和之前發(fā)表的文章哦。如果足下基礎(chǔ)比較差,不妨關(guān)注下人人都可以學(xué)習(xí)的視頻教程

分享到:
標(biāo)簽:傳輸 數(shù)據(jù)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定