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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络编程基础之C/S架构和TCP/IP协议

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络编程基础之C/S架构和TCP/IP协议 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、何謂C/S架構(gòu)

  C指的是client(客戶端軟件),S指的是Server(服務(wù)端軟件),既然我們的的標(biāo)題是網(wǎng)絡(luò)編程基礎(chǔ),

那我們就一起來學(xué)習(xí)怎樣寫一個C/S架構(gòu)的軟件,實(shí)現(xiàn)服務(wù)端與客戶端軟件基于網(wǎng)絡(luò)的通信。

?

二、必備計算機(jī)基礎(chǔ)知識

  1、眾所周知,我們開發(fā)的軟件都是應(yīng)用軟件,必須運(yùn)行在操作系統(tǒng)上,操作系統(tǒng)則運(yùn)行于硬件之上,

而應(yīng)用軟件是無法直接操作硬件的,而是調(diào)用操作系統(tǒng)的接口,由操作系統(tǒng)操縱硬件。

  2、客戶端和服務(wù)端之間信息傳遞的流程

    <1> 客戶端產(chǎn)生數(shù)據(jù),存放于客戶端軟件內(nèi)存中,然后調(diào)用操作系統(tǒng)的接口將數(shù)據(jù)發(fā)送給系統(tǒng)內(nèi)存;

    <2> 客戶端操作系統(tǒng)收到數(shù)據(jù)后,按照客戶端軟件指定的規(guī)則(協(xié)議),調(diào)用網(wǎng)卡發(fā)送數(shù)據(jù);

    <3> 通過網(wǎng)絡(luò)傳輸數(shù)據(jù);

    <4> 服務(wù)端軟件調(diào)用系統(tǒng)接口,準(zhǔn)備從操作系統(tǒng)內(nèi)存中的數(shù)據(jù)拷到自己的內(nèi)存中;

    <5> 服務(wù)端操作系統(tǒng)收到服務(wù)端軟件的指令后,使用與客戶端相同協(xié)議,從網(wǎng)卡接收數(shù)據(jù),然后

拷貝給服務(wù)端軟件。

  如圖所示:

三、TCP/IP

  1、TCP/IP協(xié)議的含義?

  TCP/IP協(xié)議是Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,

又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。

  2、起源:

    TCP/IP協(xié)議誕生于1974年,它有一個非常重要的特點(diǎn),就是開放性,即TCP/IP的規(guī)范和Internet的技術(shù)都是公開的。

目的就是使任何廠家生產(chǎn)的計算機(jī)都能相互通信,使Internet成為一個開放的系統(tǒng),這正是后來Internet得到飛速發(fā)展的重要原因。

  3、TCP/IP的五層模型

    用戶感知到的只是最上面一層應(yīng)用層,自上而下每層都依賴于下一層,每層都運(yùn)行特定的協(xié)議,越往上越靠近用戶,

越往下越靠近硬件。五層由底層到頂層依次是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。

    <1>物理層

      物理層功能:主要是基于電器特性發(fā)送高低電壓(電信號),高電壓對應(yīng)數(shù)字1,低電壓對應(yīng)數(shù)字0。通過光纜、電纜、

雙絞線和無線電波等將獨(dú)立的計算機(jī)連接起來。

    <2>數(shù)據(jù)鏈路層

      1、數(shù)據(jù)鏈路層的功能:定義了電信號的分組方式,因?yàn)閱渭兊碾娦盘?和1沒有任何意義,必須規(guī)定電信號多少為一組,

每組對應(yīng)什么意思,才能實(shí)現(xiàn)真正意義上的信息傳遞。

      2、以太網(wǎng)協(xié)議(即 ethernet)

        ethernet規(guī)定:一組電信號構(gòu)成一個數(shù)據(jù)包,叫做‘幀’;每一數(shù)據(jù)幀分成:報頭head和數(shù)據(jù)data兩部分。

          head包含:18個字節(jié)。分配是發(fā)送者(源地址):6個字節(jié);接收者(目標(biāo)地址):6個字節(jié);數(shù)據(jù)類型:6個字節(jié)。

          data包含:最短46個字節(jié),最長是1500個字節(jié)。存放的是數(shù)據(jù)包的具體內(nèi)容。

?           64字節(jié) <= head長度 + data長度 <=1518字節(jié) ,超過最大長度限制就分批發(fā)送。

        mac地址:

          head中包含的源地址和目標(biāo)地址由來:ethernet規(guī)定接入internet的設(shè)備都必須具備網(wǎng)卡,發(fā)送端和接收端

的地址便是指網(wǎng)卡的地址,即mac地址。

          mac地址:每塊網(wǎng)卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進(jìn)制,通常由12位16進(jìn)制數(shù)

表示(前六位是廠商編號,后六位是流水線號)。

        廣播:有了mac地址,同一網(wǎng)絡(luò)內(nèi)的兩臺主機(jī)就可以通信了(一臺主機(jī)通過arp協(xié)議獲取另外一臺主機(jī)的mac地址)

ethernet采用最原始的方式,廣播的方式進(jìn)行通信。

    <3> 網(wǎng)絡(luò)層

        網(wǎng)絡(luò)層功能:引入一套新的地址用來區(qū)分不同的廣播域/子網(wǎng),避免信息傳送的混亂,這套地址即網(wǎng)絡(luò)地址。

        IP協(xié)議:

          1、規(guī)定網(wǎng)絡(luò)地址的協(xié)議叫ip協(xié)議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,

        它規(guī)定網(wǎng)絡(luò)地址由32位2進(jìn)制表示;

          2、范圍0.0.0.0-255.255.255.255;

          3、一個ip地址通常寫成四段十進(jìn)制數(shù),例:192.168.10.1。

        子網(wǎng)掩碼: ?

           含義:?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?所謂”子網(wǎng)掩碼”,就是表示子網(wǎng)絡(luò)特征的一個參數(shù)。它在形式上等同于IP地址,也是一個32位二進(jìn)制數(shù)字,它的網(wǎng)絡(luò)部分全部為1,主機(jī)部分全部為0。比如,IP地址192.168.10.1,如果已知網(wǎng)絡(luò)部分是前24位,主機(jī)部分是后8位,

            那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000,寫成十進(jìn)制就是255.255.255.0。

           作用:

              子網(wǎng)掩碼是用來標(biāo)識一個IP地址的哪些位是代表網(wǎng)絡(luò)位,以及哪些位是代表主機(jī)位。子網(wǎng)掩碼不能單獨(dú)存在,它必須結(jié)合IP地址一起使用。子網(wǎng)掩碼只有一個作用,就是將某個IP地址劃分成網(wǎng)絡(luò)地址和主機(jī)地址兩部分。

             ? ? ? 區(qū)分網(wǎng)絡(luò)位和主機(jī)位是為了劃分子網(wǎng),就是把一個大網(wǎng)絡(luò)分成多個小網(wǎng)絡(luò)。

        IP地址分類:

          IP地址根據(jù)網(wǎng)絡(luò)ID的不同分為5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。       

  • A類IP地址:一個A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”,地址范圍從1.0.0.0 到126.0.0.0。可用的A類網(wǎng)絡(luò)有126個,每個網(wǎng)絡(luò)能容納1億多個主機(jī)。
  • B類IP地址 :一個B類IP地址由2個字節(jié)的網(wǎng)絡(luò)地址和2個字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255。可用的B類網(wǎng)絡(luò)有16382個,每個網(wǎng)絡(luò)能容納6萬多個主機(jī) 。
  • C類IP地址:一個2C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍從192.0.0.0到223.255.255.255。C類網(wǎng)絡(luò)可達(dá)209萬余個,每個網(wǎng)絡(luò)能容納254個主機(jī)。
  • D類地址用于多點(diǎn)廣播(Multicast): D類IP地址第一個字節(jié)以“l(fā)ll0”開始,它是一個專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點(diǎn)廣播(Multicast)中。多點(diǎn)廣播地址用來一次尋址一組計算機(jī),它標(biāo)識共享同一協(xié)議的一組計算機(jī)。
  • E類IP地址 以“l(fā)lll0”開始,為將來使用保留。
  •         

            注意:全零(“0.0.0.0”)地址對應(yīng)于當(dāng)前主機(jī)。全“1”的IP地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址;回環(huán)地址(127.0.0.1) 又稱為本機(jī)地址。

            IP報文:

              IP協(xié)議是TCP/IP協(xié)議的核心,所有的TCP,UDP,IMCP,IGCP的數(shù)據(jù)都以IP數(shù)據(jù)格式傳輸。

            ARP協(xié)議:

              我們已經(jīng)知道通信是基于mac的廣播方式實(shí)現(xiàn),計算機(jī)在發(fā)包時,獲取自身的mac是容易的,如何獲取目標(biāo)主機(jī)的mac,就需要通過arp協(xié)議。

            ARP協(xié)議功能:廣播的方式發(fā)送數(shù)據(jù)包,獲取目標(biāo)主機(jī)的mac地址。

            協(xié)議工作方式:每臺主機(jī)ip都是已知的。

            協(xié)議工作流程:以主機(jī)192.168.1.10/24 訪問 192.168.1.11/24(/24代表這個二進(jìn)制掩碼的前24位是1,后8位是0 換算成10進(jìn)制數(shù)字就是255.255.255.0)

              一、首先通過ip地址和子網(wǎng)掩碼區(qū)分自己所處的子網(wǎng)

      

              二、分析192.168.1.10/24與192.168.1.11/24處于同一網(wǎng)絡(luò)(如果不是同一網(wǎng)絡(luò),那么目標(biāo)ip為192.168.1.11/24,通過arp獲取的是網(wǎng)關(guān)的mac)。

              三、這個包會以廣播的方式在發(fā)送端所處的子網(wǎng)內(nèi)傳輸,所有主機(jī)接收后拆開包,發(fā)現(xiàn)目標(biāo)ip為自己的,就響應(yīng),返回自己的mac。

            ICMP:IP協(xié)議并不是一個可靠的協(xié)議,它不保證數(shù)據(jù)被送達(dá),那么,自然的,保證數(shù)據(jù)送達(dá)的工作應(yīng)該由其他的模塊來完成。其中一個重要的模塊就是ICMP(網(wǎng)絡(luò)控制報文)協(xié)議。

            當(dāng)傳送IP數(shù)據(jù)包發(fā)生錯誤--比如主機(jī)不可達(dá),路由不可達(dá)等等,ICMP協(xié)議將會把錯誤信息封包,然后傳送回給主機(jī)。給主機(jī)一個處理錯誤的機(jī)會.

    ?

            所以我們一般主要用ICMP協(xié)議檢測網(wǎng)絡(luò)是否通暢,基于ICMP協(xié)議的工具主要有ping 和traceroute。

            ping:利用ICMP協(xié)議包來偵測另一個主機(jī)是否可達(dá)。ping程序來計算間隔時間,并計算有多少個包被送達(dá)。用戶通過丟包率就可以判斷網(wǎng)絡(luò)大致的情況。

            traceroute:用來查看從當(dāng)前主機(jī)到某地址一共經(jīng)過多少跳路由。

        <4> 傳輸層

          我們通過ip和mac找到了一臺特定的主機(jī),如何標(biāo)識這臺主機(jī)上的應(yīng)用程序呢?答案就是端口,端口即應(yīng)用程序與網(wǎng)卡關(guān)聯(lián)的編號。

          傳輸層功能:建立端口到端口的通信。

          注意:端口范圍0-65535,0-1023為系統(tǒng)占用端口

          傳輸層協(xié)議包括兩種:TCP和UDP,如下圖所示:?

      

          TCP協(xié)議:是一種可靠傳輸,TCP數(shù)據(jù)包沒有長度限制,理論上可以無限長,但是為了保證網(wǎng)絡(luò)的效率,通常TCP數(shù)據(jù)包的長度不會超過IP數(shù)據(jù)包的長度,以確保單個TCP數(shù)據(jù)包不必再分割。

              為何TCP協(xié)議可靠,因?yàn)橹灰獩]得到確認(rèn),就重新發(fā)送數(shù)據(jù)報,直到得到對方的確認(rèn)為止。

          UDP協(xié)議:是不可靠的傳輸,“報頭”部分為8字節(jié),總長度不超過65535字節(jié),可以放進(jìn)一個IP數(shù)據(jù)包。

        TCP協(xié)議和UDP協(xié)議的比較:

          TCP協(xié)議雖然安全性高,但網(wǎng)絡(luò)開銷大,而UDP協(xié)議雖然不如TCP可靠,但網(wǎng)絡(luò)開銷小,在如今這個網(wǎng)絡(luò)安全已經(jīng)相對較高

    的情況下,為保證傳輸效率,UDP協(xié)議還是一種不錯的選擇。

    以上內(nèi)容摘錄整理自https://www.luffycity.com/python-book/di-6-zhang-wang-luo-bian-7a0b-socket-kai-fa/62.html

    ?

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

    與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的网络编程基础之C/S架构和TCP/IP协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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