TCP/IP??Transmission Control Protocol /Internet Protocol
TCP/IP是一個Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等許多協議
和ISO參考模型的分層有對應關系
應用層? (File transfer)
FTP ,? TFTP? ,pop3 (郵箱), imap? ,stp ,htps ,smtp (郵件)
–Network File System
E-mail? , smtp (郵件)
–Simple Mail Transfer Protocol
Remote login ,Telnet ,rlogin
Network management
–Simple Network Management Protocol
Name management
–Domain Name System? (NDS)53? ? 域名系統
傳輸層 (Transport)HTTP? 80
TCP? ? ? ? ?傳輸控制協議,通訊有協商過程,全雙工協議,半關閉? 可靠性,有數字編號,性能差,有錯誤檢? ? ? ? ? ? ? ? ? ?查糾錯功能,數據恢復重傳,數據包打成段排序,流量控制滑動窗口,擁塞控制,慢啟動和擁塞? ? ? ? ? ? ? ? ? ?避免算法,確認機制,E-mail,File shanring? 傳輸文件,Downloading? ?下載)
cat? /etc/service? ?可以查看應用程序的端口號
TCP? 包頭
源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時
刻能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目
標端口是用16位表示的,可推算計算機的端口個數為2^16個
0-15 是源端口? ? ? ?16-31是目標端口? ? ? ?都是16位 二進制? 一共有2^16應用程序 (65536)
序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會
按順序編號。由于序列號由32位表示,所以每2^32個字節,就會出現序列號回繞,再次從0 開始
序列號最大2^32約等于40億
確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望
你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號
確認包的編號,對方包發過來的序號
數據偏移:表示TCP報文段的首部長度,共4位,由于TCP首部包含一個長度可變的選項部分,需要指定這
個TCP報文段到底有多長。它指出TCP 報文段的數據起始處距離TCP 報文段的起始處有多遠。該字段的單
位是32位(即4個字節為計算單位),4位二進制最大表示15,所以數據偏移也就是TCP首部最大60字節
保留:是沒有使用
URG:表示本報文段中發送的數據是否包含緊急數據(緊急指針后面跟有效數字)
ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才
有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段
PSH:提示接收端應用程序應該立即從TCP接收緩沖區中讀走數據,為接收后續數據騰出空間。如果為1
,則表示對方應當立即把數據提交給上層應用,而不是緩存起來,如果應用程序不將接收到的數據
讀走
RST:如果收到一個RST=1的報文,說明與主機的連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,
然后再重新建立連接?;蛘哒f明上次發送給主機的數據有問題,主機拒絕響應,帶RST標志的TCP? ? ? ? ? ? ? ? 報? 文段稱
SYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;
當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連
接 的報
FIN:表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:“我的數據已
經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段
TCP協議PORT? ?服務器端口
傳輸層通過port號,確定應用層協議? prot number
tcp:傳輸控制協議,面向連接的協議;通信前需要建立虛擬鏈路;結束后拆除鏈路? ? ? ?0-65535
udp:User Datagram Protocol,無連接的協議? ? ?0-65535
IANA:互聯網數字分配機構(負責域名,數字資源,協議分配)
0-1023:系統端口或特權端口(僅管理員可用) ,眾所周知,永久的分配給固定的系統應用使用
22/tcp(ssh),? ?80/tcp(http),? ?443/tcp(https)
1024-49151:用戶端口或注冊端口,但要求并不嚴格,分配給程序注冊為某應用使用
1433/tcp(SqlServer),? 1521/tcp(oracle),? ?3306/tcp(mysql)? , 11211/tcp/udp(memcached)
49152-65535:動態端口或私有端口,客戶端程序隨機使用的端口
Windows? 和liunx? ?查看端口號? 通用 netstat? -no? ? /? ? -nt
TCP三次握手
TCP四次揮手
UDP? ? ? ? ?用戶數據協議,沒有數字編號,數據包錯誤就在從新傳輸,性能好(Voice 語音,?Video 視頻? )
工作在傳輸層 ,提供不可靠的網絡訪問, 非面向連接協議 , 有限的錯誤檢查 ,傳輸性能高, 無數據恢
復特性
UDP 包頭
Intrenet 層
Internet? ? prot? ? (IP 協議)
Internet? ?Control? ?Message? Protocol? (ICMP 協議)
ICMP 協議 判斷網絡狀態? ?,向對面主機發送數據包,(可以把包調大,判斷網絡穩定性 ping? IP? -s? 數? ? ? ? ? ? ? ? ? ?字)
Internet? group? management? protocol? (IGMP協議)多播應用
address? resolution? protocol? (ARP協議? 地址解析協議)廣播應用
arp? -n? 查看 處于TCP三系握手前執行拿到Mac地址
只能基于一個網絡段(IP的地址運算)跨路由 數據聯絡層的MAC地址始終變化? ARP得到地址金星通訊
reverse? address? resolution? protocol? (RARP反地址解析協議)
RARP? 與ARP剛好相反,用MAC地址查找IP地址 并且得到的地址是固定地址在(DHCP)獲取地址
Internet? ? ? ? ? ? ?IP? ? ? 協議特征
運行于OSI 網絡層? ,面向無連接的協議? ,獨立處理數據包? ,分層編址? ?盡力而為傳輸? ?無數據恢復功能
IP PDU 報頭
版本:占4位,指IP 協議的版本目前的IP協議版本號為4
首部長度:占4位,可表示的最大數值是15個單位,一個單位為4字節,因此IP 的首部長度的最大值是60字節
區分服務:占8位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使用過.后改名為區分服
務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的情況下都不使用
總長度:占16位,指首部和數據之和的長度,單位為字節,因此數據報的最大長度為65535 字節.總長度必須不超
過最大傳送單元MTU
標識:占16位,它是一個計數器,通常,每發送一個報文,該值會加1,也用于數據包分片,在同一個包的若干
分片中,該值是相同的
標志(flag):占3位,目前只有后兩位有意義
DF:Don‘t Fragment,中間的一位,只有當DF=0 時才允許分片
MF:More Fragment,最高位,MF=1表示后面還有分片。MF=0 表示最后一個分片
片偏移:占12位,指較長的分組在分片后,該分片在原分組中的相對位置.片偏移以8個字節為偏移單位
生存時間:占8位,記為TTL (Time To Live) 數據報在網絡中可通過的路由器數的最大值,TTL 字段是由發送端
初始設置一個8 bit字段.推薦的初始值由分配數字RFC 指定,當前值為64.發送ICMP 回顯應答時
常把TTL設為最大值255
一般Linux ttl=46? ? windows? ttl=128? 路由器? ttl=255
用? ? echo? 128? > /proc/sys/net/ipv4/ip_defuault_ttl? ? 修改ttl值? (生存時間)
協議:占8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據部分上交給哪個處理過程, 1
表示為ICMP 協議, 2表示為IGMP 協議, 6表示為TCP 協議, 17表示為UDP 協議
首部檢驗和:占16位,只檢驗數據報的首部不檢驗數據部分.這里不采用CRC 檢驗碼而采用簡單的計算方法
源地址和目的地址:都各占4字節,分別記錄源地址和目的地址
IP地址
它們可唯一標識IP 網絡中的每臺設備
每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的地址
有類地址分類
IP地址由兩部分組成:
網絡ID:? 標識網絡? ? ? ? ? ? ? ?每個網段分配一個網絡ID
主機ID:? 標識單個主機? ? ? ?由組織分配給各設備
IPv4地址格式:點分十進制記法
A類:? 0 000 0000 -0 111 1111: 1-127
網絡數:126, 127? ? ? 每個網絡中的主機數:2^24-2? ? ?默認子網掩碼:255.0.0.0? ? ?私網地址:10.0.0.0
B類:10 00 0000 -10 11 1111:128-191
網絡數:2^14? ? ? ? ? ?每個網絡中的主機數:2^16-2? ? ? 默認子網掩碼:255.255.0.0
私網地址:172.16.0.0-172.31.0.0
C類: 110 0 0000 -110 1 1111: 192-223
網絡數:2^21? ? ? ? ? 每個網絡中的主機數:2^8-2? ? ? ? 默認子網掩碼:255.255.255.0
私網地址:192.168.0.0-192.168.255.0
D類:組播? ? ? ?1110 0000 -1110 1111: 224-239
E類:? ?240-255
無類地址分類
CIDR? ?無類域間路由? :網絡ID和主機ID數量不確定? (32位? IPV4)
netmask? 子網掩碼
網絡ID數? netmask對應的數是1
主機ID數 netmask對應的數字是0
按照有類分 A類是255.0.0.0
B類是255.255.0.0
C類是255.255.255.0
D和E是特殊類型 沒有子網掩碼
00000000? ? ? ? ? 0
10000000? ? ? ? ? 128
11000000? ? ? ? ? ?192
11100000? ? ? ? ? ? 224
11110000? ? ? ? ? ? ?240
11111000? ? ? ? ? ? 248
11111100? ? ? ? ? ? 252
11111110? ? ? ? ? ? ?254
11111111? ? ? ? ? ? ?255
例:172.20.0.123? ?網絡ID數為22? ? ?問? netmask?是多少
網絡ID是22? 就是22個1
主機ID是10個0(32-22=10)
255.255.252.0? ? ? 8個1是255? ? ?剩下6個1是 252
172.20.0.123/22 是無類間路由表示法? ?比子網掩碼更簡潔,更方便
例:200.222.123.23/26? 問 netmask?? 主機數?
netmask? 是 255.255.255.192
主機數? ?2^6-2=62
一個網絡的主機數量=2^主機ID位數-2=2^(32位-網絡ID位數)-2
劃分子網:將一個大網劃分 成小網(網絡ID向主機ID借位)
大網:主機多(主機ID位數多網絡ID數少)
小網:主機少(主機ID位數少網絡ID數多)
合并超網:多個小網合并成大網(主機ID向網絡ID借位)找共同點
可以提高網絡訪問效率,減少時間
公共IP地址:任何人都可以訪問
私有IP地址 :給局域網用,互聯網不能訪問,
特殊地址
0.0.0.0? : 不是一個真正意義上的IP地址。它表示一個集合:所有不清楚的主機和目的網絡
255.255.255.255 :? 限制廣播地址。對本機來說,這個地址指本網段內(同一廣播域)的所有主機
127.0.0.1~127.255.255.254:
本機回環地址,主要用于測試。在傳輸介質上永遠不應該出現目的地址為“127.0.0.1”的數據包
224.0.0.0到239.255.255.255:
組播地址,224.0.0.1特指所有主機,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于
些特定的程序以及多媒體程序
169.254.x.x:
如果Windows主機使用了DHCP自動分配IP地址,而又無法從DHCP服務器獲取地址,系統會為
主機分配這樣地址
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98541