国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

通俗易懂網絡協議(TCP/IP概述)

網絡 網絡管理
近期工作,跟網絡協議相關,這讓我有機會更深入學習網絡協議。本文講了TCP/IP地址、域名、端口、TCP/IP分層模型、封裝、分用等概念。

近期工作,跟網絡協議相關,這讓我有機會更深入學習網絡協議,而之前很長一段時間,我對網絡協議的理解都停留在比較淺的層面。

比如:TCP是面向連接的、可靠傳輸,而UDP是非連接的、不可靠傳輸,TCP建連需要3次握手,會造成delay,UDP更快。

比如:socket編程,服務器socket create、bind、listen、accept、read/write、shutdown/close,客戶端socket create、connect、read/write、shutdown/close,再加上epoll/select這幾下子。

再比如:我知道網絡編程要忽視SIGPIPE信號不然會掛,read返回0代表對端主動關閉,非阻塞的read要放在循環里要考慮返回值,多路復用以及阻塞、非阻塞的區別。

TCP/UDP的區別上,我是這樣理解的:從北京到杭州,TCP相當于修了一條高鐵線路(建連)再通車發貨(傳輸數據),而UDP相當于寄快遞,丟了不管(直接傳輸數據)。

上面的理解對不對?可以說對,也可以說不對。對于應用程序員來說,有了上面的認識+熟悉socket編程接口,夠了嗎?不夠嗎?

大物理學家費曼提出一個高效的費曼學習法,即從問題入手,試著把問題都講出來,以教代學,一旦你能把問題都講清楚,便學會了。所以我想嘗試一下把TCP/IP講清楚,借此讓自己學明白,順便幫助一下讀者。

雖然《TCP/IP詳解卷1》是一本關于互聯網協議族很嚴謹詳盡的書,但在我看來,它稍微有點晦澀,可能需要讀幾遍,才能心領神會。雖然我沒有能力把這個問題說的更好,但因為我經歷過從稀里糊涂到稍有所悟的過程,這可能是大師不可比的,我將盡量用通俗易懂的語言把TCP/IP相關的知識講清楚。

網絡協議

TCP/IP是什么

TCP/IP協議族是一組協議的集合,也叫互聯網協議族,用來實現互聯網上主機之間的相互通信。TCP和IP只是其中的2個協議,也是很重要的2個協議,所以用TCP/IP來命名這個互聯網協議族,實際上,它還包括其他協議,比如UDP、ICMP、IGMP、ARP/RARP等。

網絡分層

大學《計算機網絡》教科書上有經典的網絡ISO七層模型,但七層劃分太細了,稍顯繁瑣,不容易記住。

互聯網協議族TCP/IP按粗粒度的四層劃分,兩種劃分的對照圖讓彼此關系一目了然。

通俗易懂網絡協議(TCP/IP概述)

分層是計算機領域的常用技巧,比如互聯網后端的三層架構“接入-邏輯-存儲”就是分層思想的典型應用。

分層是為了隔離,通過分層劃分職能,拆解問題,層與層之間約定接口,屏蔽實現細節。

TCP/IP自下到上劃分為鏈路層、網絡層、傳輸層、應用層。下層向上層提供能力,上層利用下層的能力提供更高的抽象。

  • 鏈路層,也稱網絡接口層,包括操作系統的設備驅動程序和網卡,它們一起處理與傳輸媒介(光纖等)的物理接口細節。
  • 網絡層,也就是IP層,負責處理IP datagram在網絡中的傳輸,IP層傳輸的是IP datagram,借助路由表,把IP datagram從網絡的一端傳輸到另一端,簡而言之:IP實現包的路由傳輸,IP協議和路由器工作在網絡層。
  • 傳輸層,提供端到端之間的通信,包括提供面向連接和高可靠性的TCP,以及無連接不可靠的UDP。貌似TCP更好,但實際不是這樣,UDP因為不需要建連開銷,所以更快,應用得也很廣,比如新一代互聯網協議HTTP3就從TCP轉向UDP,應根據適應場景選擇傳輸層協議。
  • 應用層,跟應用相關,不同應用解決不同問題,需要不同的應用層協議。

通俗易懂網絡協議(TCP/IP概述)

鏈路層處理數據在媒介上的傳輸,以及主機與網卡、光纖等打交道的細節。因為與硬件相關,所以需要借助系統的驅動程序,鏈路層協議就是定義這些細節的,比如怎么把數據從網卡發送到光纖,采用什么格式編碼等,它解決的數據在媒介上表示、流動的問題。

光有鏈路層功能肯定是不夠的,網絡上有成千上萬的機器,主機A與B通信,你不能將數據發到主機C,所以仿照現實,要為主機分配網絡地址,通過IP地址去標識網絡中的一臺主機,發送一個數據包,需要正確路由到目的地,這就好比你從家到公司,要經過哪些路徑,需要地圖,而路由表就類似這張地圖。IP解決的是數據包在網絡中的傳輸路由的問題。

有了網絡層的傳輸路由能力,還不夠,因為IP報在傳輸過程中可能丟包,比如中間經歷過的路由器緩沖區滿了便會丟包,這樣不可靠,如果需要可靠傳輸的能力,便需要傳輸層基于IP層,提供更多的能力,TCP解決了可靠性問題。具體而言,如果丟包了,TCP層會負責超時重傳,它通過接收確認和重傳機制保證了可靠傳輸。另外,因為IP報都是獨立路由的,所以從主機A到主機B,一份數據被拆分成x、y兩個IP報先后發送,這2個包可能選擇不同的傳輸路徑,這樣有可能y包先于x包到達,但我們希望在接收端(主機B)恢復這個數據的信息,但我們無法控制IP報的到達順序,所以,我們需要在接收端恢復數據,我只需要在x、y包里記錄它屬于數據塊的哪個部分,然后重組這份數據,這正是TCP做的,它會重新組裝IP報,從而保證順序性,遞交給應用層。

有時候并不需要保證可靠性和順序性,這便是UDP能提供的,它只是簡單的把數據封裝成IP報,然后通過IP層路由發送到目的端。

再往上,便是應用層協議了,比如http,又比如游戲服務器自定義協議,應用層協議通常基于TCP或者UDP做傳輸。

分層

什么是協議?懶得去翻協議的各種權威定義了,我認為協議就是約定,跟現實生活中協議這個詞含義差不多。網絡協議就是通信雙方共同遵守的約定,更具體一點,就是定義數據在網絡上傳輸的格式、規則和流程。

因為網絡是分層模型,不同層有不同層的作用,所以為各層定義各層的規則,各層對應的各層協議。

前面講了TCP/IP協議族包含很多協議,這些協議分屬不同的分層,承擔不同的作用。

通俗易懂網絡協議(TCP/IP概述)

  • TCP和UDP是兩種主要的傳輸層協議。
  • IP是網絡層的主要協議,TCP、UDP都需要利用IP協議進行數據傳輸。
  • ICMP是互聯網控制報文協議,是IP的附屬協議,IP層用它來與其他主機或路由器交換錯誤報文和其他重要信息。比如一個Packet經過某個路由器節點的時候,超過網絡對Packet的長度限制,而又不分片,則會給發送端發送一個ICMP包報告錯誤信息,屬于ICMP是用來輔助IP完成數據包傳輸的。
  • IGMP是Internet組管理協議,用來把一個包多播到多個主機。
  • ARP(地址解析協議)和RARP(逆地址解析協議)是用來轉換IP層和鏈路層的地址,IP層使用IP地址,鏈路層使用Mac地址
  • 應用層和傳輸層使用端到端(end-to-end)協議,網絡層提供的是逐跳(hop-by-hop)協議。

封裝

A給B通過網絡傳送一塊數據,可以設想僅僅是傳輸這塊原始數據是不夠的,因為網絡傳輸過程中,網絡包到了某個路由器,需要轉發,而轉發必須依賴數據包的一些附加信息,比如目標機器。

發送端在發送數據的時候,將原始數據按照協議格式加上一些控制信息,包裝成可在網絡上正確傳輸數據包的過程叫封裝。

TCP/IP協議族是層層封裝的,從應用層到鏈路層,每經過一層都要添加一些額外信息(首、尾部)。

通俗易懂網絡協議(TCP/IP概述)

  • 用戶數據經過應用程序加上應用程序首部,轉給TCP層處理
  • 經過TCP層加上TCP首部,產生TCP段(segment)
  • TCP segment經過IP層再加上IP首部,產生IP數據包(datagram)
  • IP datagram通過鏈路層,經以太網驅動程序處理后,加上以太網首部+尾部,產生以太網幀(frame),以太網幀的長度在46~1500之間

更準確的說,在IP和鏈路層傳輸的數據單元叫分組(Packet),分組既可以是一個IP datagram也可以是IP datagram的一個分片(fragment)。

UDP的封裝跟TCP略有不同,主要體現在經過傳輸層(UDP)之后添加的是8字節UDP首部,產生UDP datagram。

封裝過程中,經過TCP/UDP層的時候,會把端口號添加到TCP/UDP首部;經過IP層的時候,會把協議類型(TCP or UDP or ICMP or IGMP)添加到IP首部;經過鏈路層的時候,會把幀類型(IP or ARP or RARP)添加到以太網首部。這些信息將被用于接收端的處理。

接收端收到數據后,要執行跟發送端相反的解封操作,我們可以把發送端的數據封裝比喻成洗澡后一層層穿衣服,而接收端的操作,類似洗澡前一層層脫衣服,把首尾部剝離,獲取傳遞的原始數據。

因為網絡上的主機有不同字節序,現在要通過網絡傳輸,便需要約定統一的網絡字節序(大端序),采用小端序的主機在網絡傳輸數據的時候要轉為大端序。

地址

互聯網上每個接口都有一個唯一的網絡地址,也叫IP地址,IP地址有IPv4和IPv6兩個版本,IPv4是32位4字節的整數,每個字節(8bit)的取值范圍是0~255,所以可以把4字節的IPv4用四個點分隔的byte值表示,比如140.252.13.88,每個十進制數值對應32位整數中的每個字節,這種表示法叫點分十進制表示法,很顯然,點分十進制法和int32兩種表示法之間很容易相互轉換。

IPv4地址劃分為ABCDE五類,32位地址表示的數值空間有限,難以為互聯網上的所有聯網設備分配獨立的IP地址,所以便存在動態分配、共享、公網+內網地址轉化(NAT)等問題,本質上是為了解決IP地址不夠用的問題。

IPv6使用128bit,2的128次方就非常大了,號稱可以為地球上每粒沙子分配一個ip地址。

IP數據報(網絡層)用IP地址、而以太網幀(鏈路層)則是用硬件(48位Mac)地址,ARP和RARP用于IP地址和硬件地址之間做映射(轉換)。

端口

TCP/UDP采用16位端口號來識別(區分)應用,比如主機A向主機B發送了一個IP報,主機B的內核收到該IP報之后,應該交給哪個應用程序去處理呢?端口號就是用來干這個的,內核會維護端口號到應用程序之間的對應關系。

比較常用的應用層協議有約定的端口號,也就是知名端口號,而1024~5000之間的端口號是分配給TCP/IP臨時用的,而大于5000的另做他用。也就是說,你用TCP方式去連網絡服務器,本地為該socket分配的端口號會在1024~5000之間,這取決于操作系統的端口分配策略。

域名系統

域名系統(DNS)提供主機名字和IP地址之間的轉換,比如www.baidu.com是一個域名,應用程序可以通過一個標準庫函數(gethostbyname)來獲得給定名字主機的IP地址,標準庫函數(gethostbyaddr)實現逆操作。

ip地址是一串數字,含義不清、也不便于記憶,主機名含義更清晰,www.baidu.com你就很容易記住,這也是為什么存在IP地址還需要主機名的原因。

分用

接收端接收到以太網數據幀(Frame)之后,需要像剝洋蔥一樣,從協議棧由底向上升,即遵照鏈路層->網絡層->傳輸層->應用層的順序,去掉各層協議添加的首尾部,將數據取出,交給最上層應用程序,這個過程叫Demultiplexing,尊從書本的翻譯叫分用。

通俗易懂網絡協議(TCP/IP概述)

回顧前面封裝的描述,在傳輸層、網絡層、鏈路層,分別將端口號存入TCP/IP首部,將協議類型存入IP首部,將幀類型存入以太網幀首部。所以在接收端,將一層層拆掉首部,取出對應信息,然后做分派,丟給不同模塊處理,上圖就是整個處理過程。

小結

本文講了地址、域名、端口、TCP/IP分層模型、封裝、分用等概念。

你***能記住TCP/IP鏈路層->網絡層->傳輸層->應用層的四層劃分。

TCP segment、UDP datagram、IP datagram、IP fragment、以太網frame、以及IP層和鏈路層之間傳輸的數據單元packet,這些概念你***分清楚,這樣交談的時候會顯得比較專業而不是很土。

數據封裝,多看幾遍你便能記住了。

  • TCP封裝格式:以太網首部(14)+IP首部(20)+TCP首部(20)+應用數據+以太網尾部(4)
  • UDP封裝格式:以太網首部(14)+IP首部(20)+UDP首部(8)+應用數據+以太網尾部(4)

應用層協議在應用層實現,而傳輸層、網絡層、鏈路層都是在內核實現,所以想修改或者優化底層協議很難,因為你幾乎動不了內核,因為網絡上的大量設備OS你沒法一并改過來,這就是所謂的網絡設備僵化問題,HTTP3用UDP替代TCP,就是想在應用層自己去實現可靠傳輸等。

每個以太網幀有長度限制(48~1500),網絡上每個設備也有對包的長度限制,IP報大了就要分片,分片可能發生在發送端,也有可能發生在中間設備,但應該盡量避免分片,IP報會帶有信息讓分片后可以重組,MTU的概念可以了解一下。

ICMP和IGMP邏輯上屬于網絡層,因為他們是IP協議的附屬協議,但實際上,ICMP和IGMP報文都被封裝為IP datagram傳輸,所以又可以把他們視為IP層之上的協議。

同樣ARP和RARP用于IP地址和硬件MAC地址相互轉換,邏輯上屬于鏈路層,但實際上arp和rarp報文跟IP datagram一樣,都被封裝成以太網Frame傳輸。

接收端收到以太網幀之后,會走分用流程,最終將原始數據交給應用程序。

TCP/IP協議的應用程序經常使用socket編程接口。

有很多跟網絡相關的工具,比如ping、ifconfig、netstat、arp、tcpdump、wireshark等。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2019-06-19 08:30:47

網絡協議IPTCP

2011-10-26 19:57:33

2021-12-26 15:19:39

HTTPS網絡協議網絡傳輸

2019-06-24 07:34:38

數據報協議UDPIP

2022-08-02 10:26:09

網絡層網絡網絡協議

2022-09-23 08:32:53

微服務架構服務

2018-12-03 09:19:28

移動網絡NAT

2020-06-08 10:50:58

前端TypeScript代碼

2023-01-06 09:40:20

項目性能

2018-01-17 22:36:46

區塊鏈數字貨幣比特幣

2021-05-26 16:12:20

區塊鏈加密貨幣比特幣

2022-06-28 07:31:11

哨兵模式redis

2022-08-01 08:18:58

網絡網絡協議

2022-07-06 08:17:50

C 語言函數選型

2021-11-04 08:16:50

MySQL SQL 語句數據庫

2018-03-29 06:40:26

物聯網

2018-03-11 14:57:07

物聯網組網無線通信

2018-03-11 15:11:38

物聯網數據物聯網數據

2023-09-02 21:14:32

2021-05-30 19:02:59

變量對象上下文
點贊
收藏

51CTO技術棧公眾號

精品中国亚洲| 久久99999| av丝袜在线| 亚洲免费毛片网站| 精品国产一区二区三区麻豆免费观看完整版 | 97视频在线观看免费| 国产激情在线| 亚洲综合av网| 亚洲熟妇国产熟妇肥婆| 影视一区二区| 青青久久av北条麻妃黑人| 视频精品导航| 欧美精品一区二区三| 毛片免费在线播放| 亚洲美女视频在线| 免费看国产黄色片| 91视频一区二区三区| 狠狠干视频网站| 日韩国产在线一| 精品无人区一区二区三区竹菊| 欧美精品一区二区三区精品| 日韩在线国产精品| 欧美激情护士| 亚洲韩国欧洲国产日产av| 青青青青在线| 欧美日韩国产电影| 一级毛片视频在线| 色婷婷久久久综合中文字幕| 成年人在线播放| 亚洲色图欧美在线| ts人妖交友网站| 中文字幕亚洲区| 91xxxxx| 亚洲九九爱视频| 成人网免费看| 一区二区欧美国产| 领导边摸边吃奶边做爽在线观看| 一区二区三区高清| 最新av番号| 精品久久久久久| 青青视频在线观| 欧美日韩一区二区不卡| 国产丝袜在线| 亚洲国内精品在线| 国产精品诱惑| 韩国精品久久久999| 欧美福利在线播放网址导航| 97精品一区二区三区| 岳的好大精品一区二区三区| 国产精品免费久久久| 中文在线播放一区二区 | 欧美激情视频网址| 亚洲精品观看| 91av在线网站| 国产精品88久久久久久| 国产精品果冻传媒潘| 久久精品日产第一区二区| 亚洲欧洲一区二区| av在线播放一区二区三区| 99热手机在线| 亚洲不卡一区二区三区| 在线观看免费版| 日韩福利视频在线观看| 在线观看欧美| 国产精品女主播视频| 日韩视频一区二区三区在线播放免费观看 | 日韩精品一级中文字幕精品视频免费观看 | yellow中文字幕久久| 亚洲黄页网站| 西游记1978| 2020国产精品自拍| 国产精品久一| 亚洲国产精品一区二区第一页 | 亚洲天堂电影网| 日韩精品欧美激情| 免费人成在线不卡| 国产白浆在线免费观看| 欧美日韩精品免费在线观看视频| 欧美精品一区男女天堂| 99re亚洲国产精品| 成人毛片免费看| 日韩福利一区二区| 中文字幕精品久久| 久热成人在线视频| 在线观看黄av| 538国产精品一区二区免费视频| 亚洲日本电影在线| 日韩不卡在线视频| 国产精品大全| 亚洲欧美日韩系列| 精品国产鲁一鲁****| 一区二区三区不卡在线| 精品av久久707| 北条麻妃国产九九精品视频| 国产99久久久国产精品成人免费| 性欧美videoshd高清| 免费一级网站| 成人精品视频一区二区| 99精品视频播放| 岛国视频一区免费观看| 国产精品专区第二| 国产伦精品免费视频| 中文字幕一区二区三区精华液| 日本中文字幕一区二区| 国产成人av在线| 国产精品久久久久久久久动漫| 第一区第二区在线| 日本www.色| 日b视频免费观看| 久久久人人爽| 欧美精品久久久久久久免费观看| av激情亚洲男人天堂| 欧美在线观看视频一区| 二吊插入一穴一区二区| 国产男女在线观看| 日本熟妇人妻xxxxx| 丝袜在线视频| 天堂资源在线亚洲| 99re6这里只有精品| 一区二区三区国产盗摄| 国产乱人伦精品一区| 成人在线观看免费网站| 天天爽天天爽夜夜爽| 在线成人性视频| 成人免费视频在线观看超级碰| 亚洲美女少妇撒尿| 国产精品mm| 日韩一区二区三区免费| **精品中文字幕一区二区三区| 国产区视频在线观看| 99爱视频在线| 91视频最新入口| 精品欧美国产| 国产69精品久久久久99| y97精品国产97久久久久久| 精品日韩一区二区三区免费视频| 午夜精品久久久久久久 | 7878视频在线观看| 九九视频这里只有精品 | 欧美高清视频在线高清观看mv色露露十八 | 欧美中文字幕第一页| 中文字幕日本乱码精品影院| 国产91一区| 幼a在线观看| 一区二区三区四区视频在线观看| 91久久精品国产91久久性色tv | 国产精品成人久久电影| 欧美亚洲一二三区| 2021av天天| 欧美日韩亚洲一区二区三区四区| 色综合久久悠悠| 亚洲人成精品久久久久久| 久久综合影院| aa国产成人| www亚洲成人| 91av在线视频观看| 欧美日韩在线视频首页| 久久中文字幕一区二区三区| 污污的网站在线免费观看| 青青在线视频免费观看| 日本久久久久亚洲中字幕| 精品88久久久久88久久久| 国产一区高清在线| 国产二区国产一区在线观看| 一本大道久久a久久综合| 一区二区三区四区在线| 成人性色生活片免费看爆迷你毛片| 露出调教综合另类| 国产ktv在线视频| 视频在线不卡| av污在线观看| 国产xxxx振车| 亚洲xxxxx电影| 高清一区二区三区日本久| 精品欧美一区二区在线观看| 婷婷成人激情在线网| 亚洲乱码国产乱码精品精98午夜| 美女视频网站久久| 亚洲电影成人| 香蕉国产精品偷在线观看不卡| 欧美全黄视频| 91久久在线| 尤物网精品视频| 欧美一级一区| 亚洲欧美视频| 亚洲一二三四久久| 99精品视频在线观看| 久久精品免费看| 激情丁香综合五月| 国产精品私人自拍| 午夜国产精品一区| 国产欧美一区二区精品性色超碰| 欧亚精品一区| 日本免费精品| 免费观看成人www动漫视频| 免费亚洲电影在线| 亚洲欧美日韩直播| 国产综合色香蕉精品| eeuss中文| 你懂得网站在线|