1. 程式人生 > >網絡編程;C/S架構,TCP/IP介紹

網絡編程;C/S架構,TCP/IP介紹

cli 本機 trac 利用 服務 握手 smis 物理 tracert

什麽是c/s架構?

C指的是client(客戶端軟件),S指的是Server(服務端軟件)

應用軟件如何運行?

客戶端軟件想要基於網絡發送一條消息給服務端軟件,流程是:

1、客戶端軟件產生數據,存放於客戶端軟件的內存中,然後調用接口將自己內存中的數據發送/拷貝給操作系統內存

2、客戶端操作系統收到數據後,按照客戶端軟件指定的規則(即協議)、調用網卡發送數據

3、網絡傳輸數據

4、服務端軟件調用系統接口,想要將數據從操作系統內存拷貝到自己的內存中

5、服務端操作系統收到4的指令後,使用與客戶端相同的規則(即協議)從網卡接收到數據,然後拷貝給服務端軟件

什麽是TCP/IP?

Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網絡通訊協議,是Internet最基本的協議、Internet國際互聯網絡的基礎

技術分享圖片

OSI七層模型:

OSI/RM模型(Open System Interconnection / Reference Model)的設計目的是成為一個所有計算機廠商都能實現的開放網絡模型,來克服使用眾多私有網絡模型所帶來的困難和低效性。

物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0

數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什麽意思

數據鏈路層的功能:定義了電信號的分組方式

以太網協議:

早期的時候各個公司都有自己的分組方式,後來形成了統一的標準,即以太網協議ethernet

ethernet規定

  • 一組電信號構成一個數據包,叫做‘幀’
  • 每一數據幀分成:報頭head和數據data兩部分

head包含:(固定18個字節)

  • 發送者/源地址,6個字節
  • 接收者/目標地址,6個字節
  • 數據類型,6個字節

data包含:(最短46字節,最長1500字節)

  • 數據包的具體內容

head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送

mac地址:

head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址

mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進制,通常由12位16進制數表示(前六位是廠商編號,後六位是流水線號)

網絡層:

網絡層由來:有了ethernet、mac地址、廣播的發送方式,世界上的計算機就可以彼此通信了,問題是世界範圍的互聯網是由

一個個彼此隔離的小的局域網組成的,那麽如果所有的通信都采用以太網的廣播方式,那麽一臺機器發送的包全世界都會收到,

這就不僅僅是效率低的問題了,這會是一種災難

必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就采用廣播的方式發送,如果不是,

就采用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關

網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址

必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就采用廣播的方式發送,如果不是,

就采用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關

網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址

區分網絡位和主機位是為了劃分子網,就是把一個大網絡分成多個小網絡,為什麽要分子網呢?

  • 廣播風暴:6萬臺主機在一個網段裏,通信基本靠吼,任何一個人要吼一嗓子,6萬多個人必須被動聽著,一會你的網絡就癱瘓啦。
  • 地址浪費:運營商在公網上有很多級聯的路由器,有時候2個路由器之間只會用掉幾個IP,如果不進行子網劃分,那同網段的其它主機也就都不能用了。舉例兩個級聯路由器的接口ip分別為222.34.24.12/24,222.34.24.13/24, 此可承載255個主機的網段只用了2個IP,那其它的就全浪費了,因為不能再分配給別人。

劃分子網本質上就是借主機位到給網絡位,每借一位主機位,這個網段的可分配主機就會越少,比如192.168.1.0/24可用主機255個,借一位變成192.168.1.0/25,那可用主機就從255-128=127個了(從最大的值開始借),再借一位192.168.1.0/26,那可用主機數就變成了255-(128+64)=63個啦

TTL是 Time To Live的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網段數量。TTL是IPv4包頭的一個8 bit字段。

查看本機arp表的命令

技術分享圖片

ICMP

一般主要用ICMP協議檢測網絡是否通暢,基於ICMP協議的工具主要有ping和traceroute(win系統是tracert)

ping 利用ICMP協議包來偵測另一個主機是否可達。原理是用類型碼為0的ICMP發請 求,受到請求的主機則用類型碼為8的ICMP回應。ping程序來計算間隔時間,並計算有多少個包被送達。用戶就可以判斷網絡大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數據。

技術分享圖片

traceroute(win系統用tracert)

用來查看從當前主機到某地址一共經過多少跳路由

技術分享圖片

傳輸層

傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然後大家使用的都是應用程序,你的電腦上可能同時開啟qq,暴風影音,迅雷等多個應用程序,

那麽我們通過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序呢?答案就是端口,端口即應用程序與網卡關聯的編號。

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

補充:端口範圍0-65535,0-1023為系統占用端口

傳輸層有兩種協議,TCP和UDP,見下圖:

技術分享圖片

tcp協議

可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

最可靠的方式就是只要不得到確認,就重新發送數據報,直到得到對方的確認為止。為什麽tcp是可靠的數據傳輸呢?

tcp報文

技術分享圖片

tcp的3次握手和4四揮手

udp協議

不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

TCP協議雖然安全性很高,但是網絡開銷大,而UDP協議雖然沒有提供安全機制,但是網絡開銷小,在現在這個網絡安全已經相對較高的情況下,為了保證傳輸的速率,我們一般還是會優先考慮UDP協議!

網絡編程;C/S架構,TCP/IP介紹