TCP/IP四层模型及各层协议首部详述(包含IOS7层)
1. OSI七層和TCP/IP四層的關(guān)系
1.1?OSI引入了服務、接口、協(xié)議、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型。
1.2?OSI先有模型,后有協(xié)議,先有標準,后進行實踐;而TCP/IP則相反,先有協(xié)議和應用再提出了模型,且是參照的OSI模型。
1.3?OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網(wǎng)絡互聯(lián)事實上的標準。
TCP:transmission control protocol 傳輸控制協(xié)議
UDP:user data protocol 用戶數(shù)據(jù)報協(xié)議
2. OSI七層協(xié)議模型
應用層協(xié)議需要掌握的是:HTTP(Hyper text transfer?protocol)、FTP(file transfer?protocol)、SMTP(simple mail transfer rotocol)、POP3(post office protocol 3)、IMAP4(Internet mail access protocol)
3. TCP/IP四層模型
3.1 應用層:對應OSI中的應用層、表示層、會話層
3.2 物理鏈路層:對應OSI中的數(shù)據(jù)鏈路層、物理層(也有叫網(wǎng)絡接口層)
3.3 數(shù)據(jù)包說明:
IP層傳輸單位是IP分組,屬于點到點的傳輸;TCP層傳輸單位是TCP段,屬于端到端的傳輸
UPD首部
UPD首部格式如下:
UDP 是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。
UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。
UDP 是面向報文的。UDP 沒有擁塞控制,很適合多媒體通信的要求。
UDP 支持一對一、一對多、多對一和多對多的交互通信。
UDP 的首部開銷小,只有?8 個字節(jié)
- 端口號:用來表示發(fā)送和接受進程。由于 I P層已經(jīng)把I P數(shù)據(jù)報分配給T C P或U D P(根據(jù)I P首部中協(xié)議字段值),因此T C P端口號由T C P來查看,而 U D P端口號由UDP來查看。T C P端口號與UDP端口號是相互獨立的。
- 長度:UDP長度字段指的是UDP首部和UDP數(shù)據(jù)的字節(jié)長度。該字段的最小值為 8字節(jié)(發(fā)送一份0字節(jié)的UDP數(shù)據(jù)報是 O K)。
- 檢驗和:UDP檢驗和是一個端到端的檢驗和。它由發(fā)送端計算,然后由接收端驗證。其目的是為了發(fā)現(xiàn)UDP首部和數(shù)據(jù)在發(fā)送端到接收端之間發(fā)生的任何改動
TCP報文段首部
TCP報文段首部的前20個字節(jié)是固定的,后面的字節(jié)是根據(jù)需要增加的。首部格式如下:
TCP 提供可靠交付的服務,保證數(shù)據(jù)無差錯、不丟失、不重復、按序到達。
TCP 提供全雙工通信。
TCP雖然是面向字節(jié)流的,但TCP傳送的數(shù)據(jù)單元卻是報文段。一個TCP 報文段分為首部和數(shù)據(jù)兩部分
1、第一個4字節(jié):?
- (1)源端口,16位;發(fā)送數(shù)據(jù)的源進程端口
- (2)目的端口,16位;接收數(shù)據(jù)的進程端口
2、第二個4字節(jié)與第三個4字節(jié)?
- (1)序號,32位;代表當前TCP數(shù)據(jù)段第一個字節(jié)占整個字節(jié)流的相對位置;
- (2)確認號,32位;代表接收端希望接收的數(shù)據(jù)序號,為上次接收到數(shù)據(jù)報的序號+1,當ACK標志位為1時才生效。
3、第四個4字節(jié):?
- (1)數(shù)據(jù)偏移,4位;實際代表TCP首部長度,最大為60字節(jié)。
- (2)6個標志位,每個標志位1位;?
? ? ? ? ? ? SYN,為同步標志,用于數(shù)據(jù)同步;?
? ? ? ? ? ? ACK,為確認序號,ACK=1時確認號才有效;?
? ? ? ? ? ? FIN,為結(jié)束序號,用于發(fā)送端提出斷開連接;?
? ? ? ? ? ? URG,為緊急序號,URG=1是緊急指針有效;?
? ? ? ? ? ? PSH,指示接收方立即將數(shù)據(jù)提交給應用層,而不是等待緩沖區(qū)滿;?
? ? ? ? ? ? RST,重置連接。
- (3)窗口值,16位;標識接收方可接受的數(shù)據(jù)字節(jié)數(shù)。詳解可參看:http://www.cnblogs.com/woaiyy/p/3554182.html
4、第五個4字節(jié)?
- (1)校驗和,16位;用于檢驗數(shù)據(jù)完整性。
- (2)緊急指針,16位;只有當URG標識位為1時,緊急指針才有效。緊急指針的值與序號的相加值為緊急數(shù)據(jù)的最后一個字節(jié)位置。用于發(fā)送緊急數(shù)據(jù)。
IP報文
IP報文是在網(wǎng)絡層傳輸?shù)臄?shù)據(jù)單元,也叫IP數(shù)據(jù)報。IP報文格式如下圖
1、第一個4字節(jié)(也就是第一行):
- (1)版本號(Version),4位;用于標識IP協(xié)議版本,IPv4是0100,IPv6是0110,也就是二進制的4和6。
- (2)首部長度(Internet Header Length),4位;用于標識首部的長度,單位為4字節(jié),所以首部長度最大值為:(2^4 - 1) * 4 = 60字節(jié),但一般只推薦使用20字節(jié)的固定長度。
- (3)服務類型(Type Of Service),8位;用于標識IP包的優(yōu)先級,但現(xiàn)在并未使用。
- (4)總長度(Total Length),16位;標識IP數(shù)據(jù)報的總長度,最大為:2^16 -1 = 65535字節(jié)。
2、第二個四字節(jié):
- (1)標識(Identification),16位;用于標識IP數(shù)據(jù)報,如果因為數(shù)據(jù)鏈路層幀數(shù)據(jù)段長度限制(也就是MTU,支持的最大傳輸單元),IP數(shù)據(jù)報需要進行分片發(fā)送,則每個分片的IP數(shù)據(jù)報標識都是一致的。
- (2)標志(Flag),3位,但目前只有2位有意義;最低位為MF,MF=1代表后面還有分片的數(shù)據(jù)報,MF=0代表當前數(shù)據(jù)報已是最后的數(shù)據(jù)報。次低位為DF,DF=1代表不能分片,DF=0代表可以分片。
- (3)片偏移(Fragment Offset),13位;代表某個分片在原始數(shù)據(jù)中的相對位置。
3、第三個四字節(jié):
- (1)生存時間(TTL),8位;以前代表IP數(shù)據(jù)報最大的生存時間,現(xiàn)在標識IP數(shù)據(jù)報可以經(jīng)過的路由器數(shù)。
- (2)協(xié)議(Protocol),8位;代表上層傳輸層協(xié)議的類型,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。
- (3)校驗和(Header Checksum),16位;用于驗證數(shù)據(jù)完整性,計算方法為,首先將校驗和位置零,然后將每16位二進制反碼求和即為校驗和,最后寫入校驗和位置。
4、第四個四字節(jié):源IP地址
5、第五個四字節(jié):目的IP地址
以太網(wǎng)的幀格式如下所示:
在圖中,幀末尾就是CRC校驗碼。
此外,對其他字段解釋如下:
| 目的地址 | MAC地址 |
| 源地址 | MAC地址 |
| 類型 | 三種值,分別對應IP、ARP、RARP |
最常用的 MAC 幀是以太網(wǎng)V2的格式
注:
總結(jié)
以上是生活随笔為你收集整理的TCP/IP四层模型及各层协议首部详述(包含IOS7层)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python环境安装脚本,拷贝环境脚本,
- 下一篇: VC++ CString互转double