TCP/IP協議族 詳解(TCP/IP四層模型、OSI七層模型)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

TCP/IP協議族TCP/IP Protocol Suite,或TCP/IP Protocols),簡稱TCP/IP由于在網絡通訊協議普遍采用分層的結構,當多個層次的協議共同工作時,類似計算機科學中的堆棧,因此又被稱為TCP/IP協議棧英語:TCP/IP Protocol Stack?。這些協議最早發源于美國國防部(縮寫為DoD)的ARPA網項目,因此也被稱作DoD模型(DoD Model)。這個協議族由互聯網工程任務組負責維護。

?

TCP/IP提供點對點的鏈接機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。它將軟件通信過程抽象化為四個抽象層,采取協議堆棧的方式,分別實現出不同通信協議。協議族下的各種協議,依其功能不同,被分別歸屬到這四個層次結構之中,常被視為是簡化的七層OSI模型。

所有的TCP/IP應用都必須實現IP和ICMP

?

TCP/IP參考模型:

是一個抽象的分層模型,這個模型中,所有的TCP/IP系列網絡協議都被歸類到4個抽象的"層"中。每一抽象層創建在低一層提供的服務上,并且為高一層提供服務。 完成一些特定的任務需要眾多的協議協同工作,這些協議分布在參考模型的不同層中的,因此有時稱它們為一個協議棧

?TCP/IP參考模型為TCP/IP協議棧訂身制作。其中IP協議只關心如何使得數據能夠跨越本地網絡邊界的問題,而不關心如何利用傳輸媒體,數據如何傳輸。整個TCP/IP協議棧則負責解決數據如何通過許許多多個點對點通路(一個點對點通路,也稱為一"跳", 1 hop)順利傳輸,由此不同的網絡成員能夠在許多"跳"的基礎上創建相互的數據通路。?

如想分析更普遍的網絡通信問題,ISO的OSI模型也能起更好的幫助作用。?因特網協議族是一組實現支持因特網和大多數商業網絡運行的協議棧網絡傳輸協議。它有時也被稱為TCP/IP協議組,這個名稱來源于其中兩個最重要的協議:傳輸控制協議TCP)和因特網協議IP),它們也是最先定義的兩個協議。 同許多其他協議一樣網絡傳輸協議也可以看作一個多層組合,每層解決數據傳輸中的一組問題并且向使用這些低層服務的高層提供定義好的服務。高層邏輯上與用戶更為接近,所處理數據更為抽象,它們依賴于低層將數據轉換成最終能夠進行實體控制的形式。

?

?

因特網協議棧中的層

人們已經進行一些討論關于如何將TCP/IP參考模型映射到OSI模型。由于TCP/IP和OSI模型組不能精確地匹配,還沒有一個完全正確的答案。下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置:

?

7應用層
application layer
例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6表示層
presentation layer
例如XDR、ASN.1、SMB、AFP、NCP
5會話層
session layer
例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、IGMP、Winsock、BSD sockets
4傳輸層
transport layer
例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL
3網絡層
network layer
例如IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25
2數據鏈路層
data link layer
例如以太網、令牌環、HDLC、幀中繼、ISDN、ATM、IEEE 802.11、FDDI、PPP
1物理層
physical layer
例如線路、無線電、光纖

?

通常人們認為OSI模型的最上面三層(應用層、表示層和會話層)在TCP/IP組中是一個應用層。由于TCP/IP有一個相對較弱的會話層,由TCP和RTP下的打開和關閉連接組成,并且在TCP和UDP下的各種應用提供不同的端口號,這些功能能夠被單個的應用程序(或者那些應用程序所使用的庫)增加。與此相似的是,IP是按照將它下面的網絡當作一個黑盒子的思想設計的,這樣在討論TCP/IP的時候就可以把它當作一個獨立的層。

?

4應用層
application layer
例如HTTP、FTP、DNS
(如BGP和RIP這樣的路由協議,盡管由于各種各樣的原因它們分別運行在TCP和UDP上,仍然可以將它們看作網絡層的一部分)
3傳輸層
transport layer
例如TCP、UDP、RTP、SCTP
(如OSPF這樣的路由協議,盡管運行在IP上也可以看作是網絡層的一部分)
2網絡互連層
internet layer
對于TCP/IP來說這是因特網協議(IP)
(如ICMP和IGMP這樣的必須協議盡管運行在IP上,也仍然可以看作是網絡互連層的一部分;ARP不運行在IP上)
1網絡接口層
link layer
例如以太網、Wi-Fi、MPLS等。

?

?

四層模型:

應用層

該層包括所有和應用程序協同工作,利用基礎網絡交換應用程序專用的數據的協議。?應用層是大多數普通與網絡相關的程序為了通過網絡與其他程序通信所使用的層。這個層的處理過程是應用特有的;數據從網絡相關的程序以這種應用內部使用的格式進行傳送,然后被編碼成標準協議的格式。

一些特定的程序被認為運行在這個層上。它們提供服務直接支持用戶應用。這些程序和它們對應的協議包括HTTP(萬維網服務)、FTP(文件傳輸)、SMTP(電子郵件)、SSH(安全遠程登陸)、DNS(名稱<-> IP地址尋找)以及許多其他協議。 一旦從應用程序來的數據被編碼成一個標準的應用層協議,它將被傳送到IP棧的下一層。

在傳輸層,應用程序最常用的是TCP或者UDP,并且服務器應用程序經常與一個公開的端口號相聯系。服務器應用程序的端口由互聯網號碼分配局(IANA)正式地分配,但是現今一些新協議的開發者經常選擇它們自己的端口號。由于在同一個系統上很少超過少數幾個的服務器應用,端口沖突引起的問題很少。應用軟件通常也允許用戶強制性地指定端口號作為運行參數。

連結外部的客戶端程序通常使用系統分配的一個隨機端口號。監聽一個端口并且通過服務器將那個端口發送到應用的另外一個副本以創建對等連結(如IRC上的dcc文件傳輸)的應用也可以使用一個隨機端口,但是應用程序通常允許定義一個特定的端口范圍的規范以允許端口能夠通過實現網絡地址轉換(NAT)的路由器映射到內部。

?

每一個應用層(TCP/IP參考模型的最高層)協議一般都會使用到兩個傳輸層協議之一: 面向連接的TCP傳輸控制協議和無連接的包傳輸的UDP用戶數據報文協議。?

?

常用的應用層協議有:

運行在TCP協議上的協議:

  • HTTP(Hypertext Transfer Protocol,超文本傳輸協議),主要用于普通瀏覽。
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協議),HTTP協議的安全版本。
  • FTP(File Transfer Protocol,文件傳輸協議),由名知義,用于文件傳輸。
  • POP3(Post Office Protocol, version 3,郵局協議),收郵件用。
  • SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議),用來發送電子郵件。
  • TELNET(Teletype over the Network,網絡電傳),通過一個終端(terminal)登陸到網絡。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陸用。

運行在UDP協議上的協議:

  • BOOTP(Boot Protocol,啟動協議),應用于無盤設備。
  • NTP(Network Time Protocol,網絡時間協議),用于網絡同步。
  • DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),動態配置IP地址。

其他:

  • DNS(Domain Name Service,域名服務),用于完成地址查找,郵件轉發等工作(運行在TCP和UDP協議上)。
  • ECHO(Echo Protocol,回繞協議),用于查錯及測量應答時間(運行在TCP和UDP協議上)。
  • SNMP(Simple Network Management Protocol,簡單網絡管理協議),用于網絡信息的收集和網絡管理。
  • ARP(Address Resolution Protocol,地址解析協議),用于動態解析以太網硬件的地址。

?

傳輸層

傳輸層的協議,能夠解決諸如端到端可靠性(“數據是否已經到達目的地?”)和保證數據按照正確的順序到達這樣的問題。

在TCP/IP協議組中,傳輸協議也包括所給數據應該送給哪個應用程序。 在TCP/IP協議組中技術上位于這個層的動態路由協議通常被認為是網絡層的一部分;一個例子就是OSPF(IP協議89)。

?TCP(IP協議6)是一個“可靠的”、面向連結的傳輸機制,它提供一種可靠的字節流保證數據完整、無損并且按順序到達。TCP盡量連續不斷地測試網絡的負載并且控制發送數據的速度以避免網絡過載。另外,TCP試圖將數據按照規定的順序發送。這是它與UDP不同之處,這在實時數據流或者路由高網絡層丟失率應用的時候可能成為一個缺陷。?

較新的SCTP也是一個“可靠的”、面向連結的傳輸機制。它是面向紀錄而不是面向字節的,它在一個單獨的連結上提供通過多路復用提供的多個子流。它也提供多路自尋址支持,其中連結終端能夠被多個IP地址表示(代表多個實體接口),這樣的話即使其中一個連接失敗了也不中斷。它最初是為電話應用開發的(在IP上傳輸SS7),但是也可以用于其他的應用。?

UDP(IP協議號17)是一個無連結的數據報協議。它是一個“盡力傳遞”(best effort)或者說“不可靠”協議——不是因為它特別不可靠,而是因為它不檢查數據包是否已經到達目的地,并且不保證它們按順序到達。如果一個應用程序需要這些特性,那它必須自行檢測和判斷,或者使用TCP協議。 UDP的典型性應用是如流媒體(音頻和視頻等)這樣按時到達比可靠性更重要的應用,或者如DNS查找這樣的簡單查詢/響應應用,如果創建可靠的連結所作的額外工作將是不成比例地大。

?DCCP目前正由IEFT開發。它提供TCP流動控制語義,但對于用戶來說保留UDP的數據報服務模型。 TCP和UDP都用來支持一些高層的應用。任何給定網絡地址的應用通過它們的TCP或者UDP端口號區分。根據慣例使一些大眾所知的端口與特定的應用相聯系。

?RTP是為如音頻和視頻流這樣的實時數據設計的數據報協議。RTP是使用UDP包格式作為基礎的會話層,然而據說它位于因特網協議棧的傳輸層。

?

網絡互連層

TCP/IP協議族中的網絡互連層(internet layer)在OSI模型中叫做網絡層(network layer)。

網絡層解決在一個單一網絡上傳輸數據包的問題。類似的協議有X.25和ARPANET的Host/IMP Protocol。 隨著因特網思想的出現,在這個層上添加附加的功能,也就是將數據從源網絡傳輸到目的網絡。這就牽涉到在網絡組成的網上選擇路徑將數據包傳輸,也就是因特網。 在因特網協議組中,IP完成數據從源發送到目的的基本任務。

IP能夠承載多種不同的高層協議的數據;這些協議使用一個唯一的IP協議號進行標識。ICMP和IGMP分別是1和2。 一些IP承載的協議,如ICMP(用來發送關于IP發送的診斷信息)和IGMP(用來管理多播數據),它們位于IP層之上但是完成網絡層的功能,這表明因特網和OSI模型之間的不兼容性。所有的路由協議,如BGP、OSPF、和RIP實際上也是網絡層的一部分,盡管它們似乎應該屬于更高的協議棧。

?

網絡接口層

網絡接口層實際上并不是因特網協議組中的一部分,但是它是數據包從一個設備的網絡層傳輸到另外一個設備的網絡層的方法。這個過程能夠在網卡的軟件驅動程序中控制,也可以在韌體或者專用芯片中控制。這將完成如添加報頭準備發送、通過實體媒介實際發送這樣一些數據鏈路功能。

另一端,鏈路層將完成數據幀接收、去除報頭并且將接收到的包傳到網絡層。 然而,鏈路層并不經常這樣簡單。它也可能是一個虛擬專有網絡(VPN)或者隧道,在這里從網絡層來的包使用隧道協議和其他(或者同樣的)協議組發送而不是發送到實體的接口上。VPN和信道通常預先建好,并且它們有一些直接發送到實體接口所沒有的特殊特點(例如,它可以加密經過它的數據)。由于現在鏈路“層”是一個完整的網絡,這種協議組的遞歸使用可能引起混淆。但是它是一個實現常見復雜功能的一個優秀方法。(盡管需要注意預防一個已經封裝并且經隧道發送下去的數據包進行再次地封裝和發送)。

?

如今,大多數商業操作系統都包括TCP/IP棧,并且缺省安裝它們,對于大多數用戶來說,沒有必要去探求它們如何實現。

TCP/IP包含在所有的商業Unix和Linux發布包中,同樣也包含在Mac OS X和微軟視窗和視窗服務器版本中。

?

特別說明:以上大部分內容整理自**百科。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449707.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RGB 24和YUY2相互轉換

YUY2經常用于電視制式以及許多攝像頭的輸出格式.而我們在處理時經常需要將其轉化為RGB進行處理,這里簡單介紹下YUY2(YUV)與RGB之間相互轉化的關系: http://msdn2.microsoft.com/en-us/library/ms893078.aspx YUY2(YUV) To RGB: C Y - 16 D U - 128 E V - 128 R clip((…

通達信獲取數據

#python第三方庫pytdx獲取 from pytdx.hq import TdxHq_API api TdxHq_API() # 數據獲取接口一般返回list結構&#xff0c;如果需要轉化為pandas Dataframe接口&#xff0c;可以使用 api.to_df 進行轉化 with api.connect(119.147.212.81, 7709): # 返回普通list data …

ICMP (互聯網控制消息協議 )是什么

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 互聯網控制消息協議&#xff08;英語&#xff1a;Internet Control Message Protocol&#xff0c;縮寫&#xff1a;ICMP&#xff09;是互…

股票數據相關性分析

導入相關包 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection import akshare as ak from sklearn import cluster, covariance, manifold %matplotlib inline #Jupyter Notebook顯示圖形專用 plt…

分享一個輔助分析內存泄漏的腳本

最近給系統做了一點優化&#xff0c;前幾天去查看系統監控&#xff0c;想看看上線前后cpu使用率曲線變化情況。查看的時候意外發現上線前后內存占用相差不少&#xff0c;20%以上。 本來我沒怎么在意這個問題&#xff0c;因為我們系統會在運行過程中緩存部分數據內容。但客戶覺得…

windows Virtualbox下配置Ubuntu,且用ssh連接

1、軟件介紹 1&#xff09;virtualbox 5.2.22 2&#xff09;Ubuntu 18.04 3&#xff09;git bash 2、virtualbox設置 安裝完Ubuntu后點擊該鏡像的設置&#xff0c;依次點擊“網絡”——“端口轉發” 將主機端口設置為一個閑置端口&#xff0c;子系統端口也就是Ubuntu端口設置…

專訪劉偉:軟件開發人員的內功修煉之道

摘要&#xff1a;數學修養對軟件開發之路起著什么作用&#xff1f;碼農如何修煉自己的內功并成長為優秀的軟件開發員&#xff1f;帶著相關思考&#xff0c;社區之星第10期采訪了中南大學副教授——劉偉。他對數學修養、設計模式、軟件架構和重構方面的獨特見解&#xff0c;相信…

多線程數據下載(akshare)

import akshare as ak import pandas as pd from multiprocessing.dummy import Pool as ThreadPool import datetime import timedef get_hs300_stock_codes():獲取滬深300股票代碼列表:return:hs300ak.index_stock_cons_sina("000300")codeshs300[code]codescodes.…

MongoDB 4.6.1 c++ driver 編譯

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主同意不得轉載。https://blog.csdn.net/sheismylife/article/details/25512251 這個版本號已經和之前不一樣了。有專門的github的項目。https://github.com/mongodb/mongo-cxx-driver首先獲取源碼&#xff1a;git cl…

地址解析協議 (ARP) 是什么

地址解析協議 (ARP) 是通過解析網路層地址來找尋數據鏈路層地址的一個在網絡協議包中極其重要的網絡傳輸協議。 ARP是通過網絡地址(例&#xff1a;IPv4)來定位MAC地址 (也稱為乙太地址)。 ARP已經在很多網路層和數據鏈接層之間得以實現&#xff0c;包括IPv4&#xff0c;Chaosn…

04.React事件 方法、 React定義方法的幾種方式 獲取數據 改變數據 執行方法傳值...

2019獨角獸企業重金招聘Python工程師標準>>> 一.基本用法 在以類繼承的方式定義的組件中&#xff0c;為了能方便地調用當前組件的其他成員方法或屬性&#xff08;如&#xff1a;this.state&#xff09;&#xff0c;通常需要將事件處理函數運行時的 this 指向當前組件…

代碼之美——Doom3源代碼賞析

摘要&#xff1a;Dyad作者、資深C工程師Shawn McGrathz在空閑時翻看了Doom3的源代碼&#xff0c;發出了這樣的驚嘆&#xff1a;“這是我見過的最整潔、最優美的代碼&#xff01;”“Doom 3的源代碼讓我對那些優秀的程序員刮目相看。”因此有了本文。 背景介紹&#xff1a; Doom…

UDP:用戶數據報協議 是什么

用戶數據報協議&#xff08;英語&#xff1a;User Datagram Protocol&#xff0c;縮寫為UDP&#xff09;&#xff0c;又稱用戶數據報文協議&#xff0c;是一個簡單的面向數據報的傳輸層協議&#xff0c;正式規范為RFC 768。在TCP/IP模型中&#xff0c;UDP為網絡層以上和應用層以…

隨想錄(程序員和收入)

距離上一次寫博客已經很長時間了&#xff0c;大約過了三個星期。這三個星期發生了很多事情&#xff0c;這中間也有我自己的思考積累&#xff0c;也有工作上的變故。總之&#xff0c;自己想了很多&#xff0c;也得到了很多。每到這個時候&#xff0c;畢業生朋友們都在尋找工作&a…

iOS進階之正則表達式

最近一直在弄正則表達式&#xff0c;于是在這里整理一下&#xff0c;便于日后查閱。 1、常用符號 ^&#xff1a;字符串的開始$&#xff1a;字符串的結束*&#xff1a;表示零個或若干個?&#xff1a;表示零個或一個&#xff1a;表示一個或若干個| &#xff1a;表示 或 操作. &a…

akshare分析漲停板股票數據

導入包&#xff0c;獲取日期數據 import pandas as pd import numpy as np import akshare as ak #畫圖 import matplotlib.pyplot as plt #正確顯示中文和負號 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #處理時間 from dateutil.parser…

DNS(域名系統) 是什么

域名系統&#xff08;英文&#xff1a;Domain Name System&#xff0c;縮寫&#xff1a;DNS&#xff09;是互聯網的一項服務。 它作為將域名和IP地址相互映射的一個分布式數據庫&#xff0c;能夠使人更方便地訪問互聯網。 DNS使用TCP和UDP端口53。當前&#xff0c;對于每一級域…

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢&#xff0c;就是不想看書。但是已經大三了&#xff0c;春節過后就要找實習了。哎&#xff0c;快樂的大學生活終于要過去了。 先從簡單的書看起吧&#xff01;在圖書館借了本《The Art of Readable Code》&#xff0c;就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件&#xff0c;將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤&#xff0c;ifstream是從硬盤到內存&#xff0c;其實所謂的流緩沖就是內存空間; 在C中&#xff0c;有一個stream這個類&#xff0c;所有的I/O都以這個“流”類為基礎的&#xff0c;包括我們要認識的文件I/O&#xff0c;stream這個類有兩個重要的運算符&…