网络基础知识-TCP/IP协议各层详解
TCP/IP簡介
雖然大家現在對互聯網很熟悉,但是計算機網絡的出現比互聯網要早很多。
計算機為了聯網,就必須規定通信協議,早期的計算機網絡,都是由各廠商自己規定一套協議,IBM、Apple和Microsoft都有各自的網絡協議,互不兼容,這就好比一群人有的說英語,有的說中文,有的說德語,說同一種語言的人可以交流,不同的語言之間就不行了。
為了把全世界的所有不同類型的計算機都連接起來,就必須規定一套全球通用的協議,為了實現互聯網這個目標,互聯網協議簇(Internet Protocol Suite)就是通用協議標準。Internet是由inter和net兩個單詞組合起來的,原意就是連接“網絡”的網絡,有了Internet,任何私有網絡,只要支持這個協議,就可以聯入互聯網。
因為互聯網協議包含了上百種協議標準,但是最重要的兩個協議是TCP和IP協議,所以,大家把互聯網的協議簡稱TCP/IP協議。
通信的時候,雙方必須知道對方的標識,好比發郵件必須知道對方的郵件地址。互聯網上每個計算機的唯一標識就是IP地址,類似123.123.123.123。如果一臺計算機同時接入到兩個或更多的網絡,比如路由器,它就會有兩個或多個IP地址,所以,IP地址對應的實際上是計算機的網絡接口,通常是網卡。
IP協議負責把數據從一臺計算機通過網絡發送到另一臺計算機。數據被分割成一小塊一小塊,然后通過IP包發送出去。由于互聯網鏈路復雜,兩臺計算機之間經常有多條線路,因此,路由器就負責決定如何把一個IP包轉發出去。IP包的特點是按塊發送,途徑多個路由,但不保證能到達,也不保證順序到達。
IP地址實際上是一個32位整數(稱為IPv4),以字符串表示的IP地址如192.168.0.1實際上是把32位整數按8位分組后的數字表示,目的是便于閱讀。
IPv6地址實際上是一個128位整數,它是目前使用的IPv4的升級版,以字符串表示類似于 2001:0db8:85a3:0042:1000:8a2e:0370:7334。
TCP協議則是建立在IP協議之上的。TCP協議負責在兩臺計算機之間建立可靠連接,保證數據包按順序到達。TCP協議會通過握手建立連接,然后,對每個IP包編號,確保對方按順序收到,如果包丟掉了,就自動重發。
許多常用的更高級的協議都是建立在TCP協議基礎上的,比如用于瀏覽器的HTTP協議、發送郵件的SMTP協議等。
一個IP包除了包含要傳輸的數據外,還包含源IP地址和目標IP地址,源端口和目標端口。
端口有什么作用?在兩臺計算機通信時,只發IP地址是不夠的,因為同一臺計算機上跑著多個網絡程序。一個IP包來了之后,到底是交給瀏覽器還是QQ,就需要端口號來區分。每個網絡程序都向操作系統申請唯一的端口號,這樣,兩個進程在兩臺計算機之間建立網絡連接就需要各自的IP地址和各自的端口號。
一個進程也可能同時與多個計算機建立鏈接,因此它會申請很多端口。
TCP/IP詳解
?
TCP/IP協議毫無疑問是互聯網的基礎協議,沒有它就根本不可能上網,任何和互聯網有關的操作都離不開TCP/IP協議。不管是OSI七層模型還是TCP/IP的四層、五層模型,每一層中都要自己的專屬協議,完成自己相應的工作以及與上下層級之間進行溝通。由于OSI七層模型為網絡的標準層次劃分,所以我們以OSI七層模型為例從下向上進行一一介紹。
?
tcp/ip是個協議組,它可以分為4個層次,即網路接口層,網絡層,傳輸層,以及應用層,
在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。
在傳輸層有TCP,UDP協議
而在應用層有HTTP,FTP,DNS等協議
因此HTTP本身就是一個協議,是從WEB服務器端傳輸超文本,到本地瀏覽器的一個傳輸協議
下面我們用一張圖來準確形象的表示:
?
OSI模型
???? OSI/RM協議是由ISO(國際標準化組織)制定的,它需要三個基本的功能:提供給開發者一個休息的,通用的概念以便開發完善,可以用來解釋連接不同系統的框架。
?
OSI模型定義了不同計算機互聯的標準,是設計和描述計算機網絡通信的基本框架。OSI模型把網絡通信的基本框架工作分為7層,分別是物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層和應用層。下面詳細介紹。
?
(1)物理層(Physical Layer)
物理層由來:上面提到,孤立的計算機之間要想一起玩,就必須接入internet,言外之意就是計算機之間必須完成組網物理層功能:主要是基于電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0物理層是OSI參考模型的最低層,它利用傳輸介質為數據鏈路層提供物理連接。它主要關心的是通過物理鏈路從一個節點向另一個節點傳送比特流,物理鏈路可能是銅線、衛星、微波或其他的通訊媒介。它關心的問題有:多少伏電壓代表1?多少伏電壓代表0?時鐘速率是多少?采用全雙工還是半雙工傳輸?總的來說物理層關心的是鏈路的機械、電氣、功能和規程特性。
?
?
(2)數據鏈路層(Data Link Layer)
數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什么意思數據鏈路層的功能:定義了電信號的分組方式數據鏈路層是為網絡層提供服務的,解決兩個相鄰結點之間的通信問題,傳送的協議數據單元稱為數據幀。 數據幀中包含物理地址(又稱MAC地址)、控制碼、數據及校驗碼等信息。該層的主要作用是通過校驗、確認和反饋重發等手段,將不可靠的物理鏈路轉換成對網絡層來說無差錯的數據鏈路。 此外,數據鏈路層還要協調收發雙方的數據傳輸速率,即進行流量控制,以防止接收方因來不及處理發送方來的高速數據而導致緩沖器溢出及線路阻塞。
?4> 兩個重要設備名稱:網橋和交換機。
以太網協議:
早期的時候各個公司都有自己的分組方式,后來形成了同意的標準,即以太網協議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進制數表示(前六位是廠商編號,后六位是流水線號)
廣播:
有了mac地址,同一網絡內的兩臺主機就可以通信了(一臺主機通過arp協議獲取另外一臺主機的mac地址)
ethernet采用最原始的方式,廣播的方式進行通信,即計算機通信基本靠吼
?
(3)網絡層(Network Layer)
網絡層是為傳輸層提供服務的,傳送的協議數據單元稱為數據包或分組。該層的主要作用是解決如何使數據包通過各結點傳送的問題,即通過路徑選擇算法(路由)將數據包送到目的地。另外,為避免通信子網中出現過多的數據包而造成網絡阻塞,需要對流入的數據包數量進行控制(擁塞控制)。當數據包要跨越多個通信子網才能到達目的地時,還要解決網際互連的問題。?
網絡層由來:有了ethernet、mac地址、廣播的發送方式,世界上的計算機就可以彼此通信了, 問題是世界范圍的互聯網是由一個個彼此隔離的小的局域網組成的,那么如果所有的通信都采用以太網的廣播方式, 那么一臺機器發送的包全世界都會收到,這就不僅僅是效率低的問題了,這會是一種災難
上圖結論:必須找出一種方法來區分哪些計算機屬于同一廣播域,哪些不是,如果是就采用廣播的方式發送,如果不是,
就采用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關
網絡層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網絡地址
IP協議:
- 規定網絡地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛采用的v4版本即ipv4,它規定網絡地址由32位2進制表示
- 范圍0.0.0.0-255.255.255.255
- 一個ip地址通常寫成四段十進制數,例:172.16.10.1
子網劃分的具體內容請看博客:http://www.cnblogs.com/wj-1314/p/8302473.html
子網掩碼:
所謂“子網掩碼”,就是表示子網絡特征的一個參數,它在形式上等同于IP地址,也就是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。
比如,IP地址172.16.10.1,如果已知網絡部分是前24位,主機部分是后8位,那么子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。
子網掩碼是用來標識一個IP地址的那些位是代表網絡位,以及那些位代表主機位。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分為網絡地址和主機地址兩部分。
蒙蔽的你肯定想問,我要區分網絡位和主機位干鬼用?這就像寄信,你給你的南方姑娘寄信,她肉身在廈門,詳細地址是廈門鼓浪嶼三街27號, 那網絡位就相當于城市,詳細地址就是主機位,網絡位幫你定位到城市,主機位幫你找到 你的南方姑娘。 路由器通過子網掩碼來確定哪些是網絡位,哪些是主機位區分網絡位和主機位是為了劃分子網,就是把一個大網絡分成多個小網絡,為什么要分子網呢?
- 廣播風暴: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個啦
IP地址分類:
IP地址根據網絡ID的不同分為5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。
環回接口(loopback)。平時我們用127.0.0.1來嘗試自己的機器服務器好使不好使。走的就是這個loopback接口。對于環回接口,有如下三點值得注意:
- 傳給環回地址(一般是127.0.0.1)的任何數據均作為IP輸入。
- 傳給廣播地址或多播地址的數據報復制一份傳給環回接口,然后送到以太網上。這是 因為廣播傳送和多播傳送的定義包含主機本身。
- 任何傳給該主機IP地址的數據均送到環回接口。
?IP報文:
IP協議是TCP/IP協議的核心,所有的TCP,UDP,IMCP,IGCP的數據都以IP數據格式傳輸,要注意的是,IP不是可靠的協議,這是說,IP協議沒有提供一種數據未傳達以后的處理機制--這被認為是上層協議--TCP或UDP要做的事情。所以這也就出現了TCP是一個可靠的協議,而UDP就沒有那么可靠的區別。這是后話,暫且不提。
IP協議頭:
挨個解釋它是教科書的活計,我感興趣的只是那八位的TTL字段,還記得這個字段是做什么的么?這個字段規定該數據包在穿過多少個路由之后才會被拋棄(這里就體現出來IP協議包的不可靠性,它不保證數據被送達),某個ip數據包每穿過一個路由器,該數據包的TTL數值就會減少1,當該數據包的TTL成為零,它就會被自動拋棄。這個字段的最大值也就是255,也就是說一個協議包也就在路由器里面穿行255次就會被拋棄了,根據系統的不同,這個數字也不一樣,一般是32或者是64。
?ARP協議
arp協議由來:計算機通信基本靠吼,即廣播的方式,所有上層的包到最后都要封裝上以太網頭,然后通過以太網協議發送,在談及以太網協議時候,我門了解到
通信是基于mac的廣播方式實現,計算機在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就需要通過arp協議
arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址
協議工作方式:每臺主機ip都是已知的
例如:主機172.16.10.10/24訪問172.16.10.11/24
一,首先通過IP地址和子網掩碼區分出自己所處的子網
| 場景 | 數據包地址 |
| 同一子網 | 目標主機mac,目標主機IP |
| 不同子網 | 網管mac,目標主機IP |
二,分析172.16.10.10/24與172.16.10.11/24處于同一網絡(如果不是同一網絡,那么下表中目標ip為172.16.10.1,通過arp獲取的是網關的mac)
| ? | 源mac | 目標mac | 源ip | 目標ip | 數據部分 |
| 發送端主機 | 發送端mac | FF:FF:FF:FF:FF:FF | 172.16.10/24 | 172.16.10.11/24 | 數據 |
三:這個包會以廣播的方式在發送端所處的子網內傳輸,所有主機接收后拆開包,發現目標ip為自己的,就響應,返回自己的mac
查看本機arp表的命令
命令窗孔(請輸入): arp -a ? (192.168.0.3) at 0:21:cc:65:52:f0 on en4 ifscope [ethernet] ? (192.168.0.64) at 68:f7:28:d0:4b:21 on en4 ifscope [ethernet] ? (192.168.0.233) at 84:d9:31:3:ae:8b on en4 ifscope [ethernet] ? (192.168.0.254) at 60:da:83:be:c2:5a on en4 ifscope [ethernet] ? (192.168.0.255) at (incomplete) on en4 ifscope [ethernet] ? (224.0.0.251) at 1:0:5e:0:0:fb on en4 ifscope permanent [ethernet]ICMP(網絡控制報文)協議
前面講到了,IP協議并不是一個可靠的協議,它不保證數據被送達,那么,自然的,保證數據送達的工作應該由其他的模塊來完成。其中一個重要的模塊就是ICMP(網絡控制報文)協議。
當傳送IP數據包發生錯誤--比如主機不可達,路由不可達等等,ICMP協議將會把錯誤信息封包,然后傳送回給主機。給主機一個處理錯誤的機會.
我們一般主要用ICMP協議檢測網絡是否通暢,基于ICMP協議的工具主要有ping 和traceroute
ping
(輸入命令)$ ping www.baidu.com PING www.a.shifen.com (111.13.100.91): 56 data bytes 64 bytes from 111.13.100.91: icmp_seq=0 ttl=54 time=6.563 ms 64 bytes from 111.13.100.91: icmp_seq=1 ttl=54 time=6.320 ms 64 bytes from 111.13.100.91: icmp_seq=2 ttl=54 time=6.698 ms 64 bytes from 111.13.100.91: icmp_seq=3 ttl=54 time=6.445 ms ^C --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 6.320/6.506/6.698/0.140 msping這個單詞源自聲納定位,而這個程序的作用也確實如此,它利用ICMP協議包來偵測另一個主機是否可達。原理是用類型碼為0的ICMP發請 求,受到請求的主機則用類型碼為8的ICMP回應。ping程序來計算間隔時間,并計算有多少個包被送達。用戶就可以判斷網絡大致的情況。我們可以看到, ping給出來了傳送的時間和TTL的數據。
traceroute
用來查看從當前主機到某地址一共經過多少跳路由
$ traceroute www.baidu.comtraceroute: Warning: www.baidu.com has multiple addresses; using 111.13.100.91 traceroute to www.a.shifen.com (111.13.100.91), 64 hops max, 52 byte packets1 192.168.0.254 (192.168.0.254) 0.458 ms 0.274 ms 0.246 ms2 122.71.64.1 (122.71.64.1) 2.006 ms 1.788 ms 1.626 ms3 * 222.35.254.253 (222.35.254.253) 2.024 ms 2.243 ms4 222.35.254.241 (222.35.254.241) 9.333 ms61.233.9.50 (61.233.9.50) 4.960 ms61.233.9.93 (61.233.9.93) 3.010 ms5 61.237.2.202 (61.237.2.202) 3.442 ms 3.497 ms......
(4)傳輸層(Transport Layer)
傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。 傳輸層傳送的協議數據單元稱為段或報文。?
傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然后大家使用的都是應用程序,你的電腦上可能同時開啟qq,暴風影音,迅雷等多個應用程序,
那么我們通過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序呢?答案就是端口,端口即應用程序與網卡關聯的編號。
傳輸層功能:建立端口到端口的通信
補充:端口范圍0-65535,0-1023為系統占用端口
傳輸層有兩種協議,TCP和UDP,見下圖
TCP協議
可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。
| 以太網頭 | ip頭 | tcp頭 | 數據 |
tcp報文
UDP協議
不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。
| 以太網頭 | ip頭 | UDP頭 | 數據 |
總結
?
TCP協議雖然安全性很高,但是網絡開銷大,而UDP協議雖然沒有提供安全機制,但是網絡開銷小,在現在這個網絡安全已經相對較高的情況下,為了保證傳輸的速率,我們一般還是會優先考慮UDP協議!
(5)會話層(Session Layer)
會話層主要功能是管理和協調不同主機上各種進程之間的通信(對話),即負責建立、管理和終止應用程序之間的會話。會話層得名的原因是它很類似于兩個實體間的會話概念。例如,一個交互的用戶會話以登錄到計算機開始,以注銷結束。?
(6)表示層(Presentation Layer)
表示層處理流經結點的數據編碼的表示方式問題,以保證一個系統應用層發出的信息可被另一系統的應用層讀出。如果必要,該層可提供一種標準表示形式,用于將計算機內部的多種數據表示格式轉換成網絡通信中采用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。?
(7)應用層(Application Layer)
應用層是OSI參考模型的最高層,是用戶與網絡的接口。該層通過應用程序來完成網絡用戶的應用需求,如文件傳輸、收發電子郵件等。?打個比方
7應用層:老板 6表示層:相當于公司中演示文稿,替老板寫信的助理 5會話層:相當于公司中收寄信,寫信封與拆信封的秘書 4傳輸層:相當于公司跑郵局的送信職員 3網絡層:相當于郵局的排序工人 2數據鏈路層:相當于有局中的裝拆箱工人 1 物理層:相當于郵局中的搬運工人
????? 為了方便起見,我們常常把上面的7個層次分為低層與高層。低層為1~4層,是面向通信的,高層為5~7層,是面向信息處理的。
?網絡通信三要素
———1:IP地址
(1):用來標識網絡上一臺獨立的主機
(2):IP地址=網絡地址+主機地址(網絡號:用于識別主機所在的網絡或者網段;主機號:用于識別該網絡中的主機)
(3):特殊的IP地址:127.0.0.1(本地回環地址,保留地址,點分十進制),可用于簡單的測試網卡是否故障,表示本機
———2:端口
要將數據發送到對方指定的應用程序上,為了標識這些應用程序,所以給這些網絡應用程序都用數字進行標識,為了方便稱呼這些數字,則將這些數字稱為端口。(此端口稱為一個邏輯端口)
———3:傳輸協議
(1)UDP:user datagram protocol(用戶數據報協議)
特點:
——1:面向無連接:傳輸數據之前源端和目的端不需要建立連接
——2:每個數據報的大小都限制在64k(8個字節)以內
——3:面向報文的不可靠協議(即發出去的數據不一定會接收到)
——4:傳輸速率快,效率高
——5:現實生活實例:郵局寄件,實時在線聊天,視頻協議等等
(2)TCP:transmission control protocol(傳輸控制協議)
?特點:
——1:面向連接:傳輸數據之前需要建立連接
——2:在連接過程中進行大量的數據傳輸
——3:通過“三次握手”的方式完成連接,是安全可靠的協議
——4:傳輸效率低,速度慢
?
轉載于:https://www.cnblogs.com/wj-1314/p/7588252.html
總結
以上是生活随笔為你收集整理的网络基础知识-TCP/IP协议各层详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ::的类名前有个 ,什么意思?
- 下一篇: S5P4418/S5P6818核心板EM