-
當前位置:首頁 > 創(chuàng)意學院 > 技術(shù) > 專題列表 > 正文
Tcp命令(tcp命令大全)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于Tcp命令的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、tcpdump 命令使用簡介
tcpdump 是一款強大的網(wǎng)絡抓包工具,運行在 linux 平臺上。熟悉 tcpdump 的使用能夠幫助你分析、調(diào)試網(wǎng)絡數(shù)據(jù)。
要想使用很好地掌握 tcpdump, 必須對網(wǎng)絡報文( TCP/IP 協(xié)議)有一定的了解。不過對于簡單的使用來說,只要有網(wǎng)絡基礎概念就行了。
tcpdump 是一個很復雜的命令,想了解它的方方面面非常不易,也不值得推薦,能夠使用它解決日常工作中的問題才是關(guān)鍵。
tcpdump 的選項也很多,要想知道所有選項的話,請參考 man tcpdump ,下面只記錄 tcpdump 最常用的選項。
完整的英文文檔: https://www.tcpdump.org/tcpdump_man.html
需要注意的是,tcpdump 默認只會截取前 96 字節(jié)的內(nèi)容,要想截取所有的報文內(nèi)容,可以使用 -s number , number 就是你要截取的報文字節(jié)數(shù),如果是 0 的話,表示截取報文全部內(nèi)容。
Frame = Ethernet Header + IP Header + TCP Header + TCP Segment Data
Ethernet Header 以下的IP數(shù)據(jù)報最大傳輸單位為 MTU (Maximum Transmission Unit,Effect of short board),對于大多數(shù)使用以太網(wǎng)的局域網(wǎng)來說, MTU=1500 。
TCP數(shù)據(jù)包每次能夠傳輸?shù)淖畲髷?shù)據(jù)分段為MSS,為了達到最佳的傳輸效能,在建立TCP連接時雙方將協(xié)商MSS值——雙方提供的MSS值中的最小值為這次連接的最大MSS值。MSS往往基于MTU計算出來,通常 MSS =MTU-sizeof(IP Header)-sizeof(TCP Header)=1500-20-20=1460。
這樣,數(shù)據(jù)經(jīng)過本地TCP層分段后,交給本地IP層,在本地IP層就不需要分片了。但是在下一跳路由(Next Hop)的鄰居路由器上可能發(fā)生IP分片!因為路由器的網(wǎng)卡的MTU可能小于需要轉(zhuǎn)發(fā)的IP數(shù)據(jù)報的大小。
這時候,在路由器上可能發(fā)生兩種情況:
(1)如果源發(fā)送端設置了這個IP數(shù)據(jù)包可以分片(May Fragment,DF=0),路由器將IP數(shù)據(jù)報分片后轉(zhuǎn)發(fā)。
(2)如果源發(fā)送端設置了這個IP數(shù)據(jù)報不可以分片(Don’t Fragment,DF=1),路由器將IP數(shù)據(jù)報丟棄,并發(fā)送ICMP分片錯誤消息給源發(fā)送端。
默認啟動,普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡接口上所有流過的數(shù)據(jù)包
監(jiān)聽所有端口,直接顯示 ip 地址。
顯示更詳細的數(shù)據(jù)報文,包括 tos, ttl, checksum 等。
顯示數(shù)據(jù)報的全部數(shù)據(jù)信息,用 hex 和 ascii 兩列對比輸出。
下面是抓取 ping 命令的請求和返回的兩個報文,可以看到全部的數(shù)據(jù)。
機器上的網(wǎng)絡報文數(shù)量異常的多,很多時候我們只關(guān)系和具體問題有關(guān)的數(shù)據(jù)報(比如訪問某個網(wǎng)站的數(shù)據(jù),或者 icmp 超時的報文等等),而這些數(shù)據(jù)只占到很小的一部分。把所有的數(shù)據(jù)截取下來,從里面找到想要的信息無疑是一件很費時費力的工作。而 tcpdump 提供了靈活的語法可以精確地截取關(guān)心的數(shù)據(jù)報,簡化分析的工作量。這些選擇數(shù)據(jù)包的語句就是過濾器(filter)!
過濾器也可以簡單地分為三類: type , dir 和 proto 。
Type 讓你區(qū)分報文的類型,主要由 host (主機), net (網(wǎng)絡) 和 port (端口) 組成。 src 和 dst 也可以用來過濾報文的源地址和目的地址。
此外還有指定端口和數(shù)據(jù)報文范圍的過濾器:
過于過濾器的更多詳細信息,請訪問 tcpdump 官方 map page 的 PCAP-FILTER 部分
使用 tcpdump 截取數(shù)據(jù)報文的時候,默認會打印到屏幕的默認輸出,你會看到按照順序和格式,很多的數(shù)據(jù)一行行快速閃過,根本來不及看清楚所有的內(nèi)容。不過,tcpdump 提供了把截取的數(shù)據(jù)保存到文件的功能,以便后面使用其他圖形工具(比如 wireshark,Snort)來分析。
-w 選項用來把數(shù)據(jù)報文輸出到文件,比如下面的命令就是把所有 80 端口的數(shù)據(jù)導入到文件
-r 可以讀取文件里的數(shù)據(jù)報文,顯示到屏幕上。
NOTE:保存到文件的數(shù)據(jù)不是屏幕上看到的文件信息,而是包含了額外信息的固定格式 pcap,需要特殊的軟件(如: Wireshark )來查看,使用 vim 或者 cat 命令會出現(xiàn)亂碼。
過濾的真正強大之處在于你可以隨意組合它們,而連接它們的邏輯就是常用的 與/AND/&& 、 或/OR/|| 和 非/not/! 。
從上面的例子就可以看出,你可以隨意地組合之前的過濾器來截取自己期望的數(shù)據(jù)報,最重要的就是知道自己要精確匹配的數(shù)據(jù)室怎樣的!
對于比較復雜的過濾器表達式,為了邏輯的清晰,可以使用括號。不過默認情況下,tcpdump 把 () 當做特殊的字符,所以必須使用單引號 ' 來消除歧義:
抓取所有經(jīng)過eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP數(shù)
抓取所有經(jīng)過eth1,目標MAC地址是00:01:02:03:04:05的ICMP數(shù)據(jù)
抓取所有經(jīng)過eth1,目的網(wǎng)絡是192.168,但目的主機不是192.168.1.200的TCP數(shù)據(jù)
截取數(shù)據(jù)只是第一步,第二步就是理解這些數(shù)據(jù),下面就解釋一下 tcpdump 命令輸出各部分的意義。
最基本也是最重要的信息就是數(shù)據(jù)報的源地址/端口和目的地址/端口,上面的例子第一條數(shù)據(jù)報中,源地址 ip 是 192.168.1.106 ,源端口是 56166 ,目的地址是 124.192.132.54 ,目的端口是 80 。 > 符號代表數(shù)據(jù)的方向。
此外,上面的三條數(shù)據(jù)還是 tcp 協(xié)議的三次握手過程,第一條就是 SYN 報文,這個可以通過 Flags [S] 看出。下面是常見的 TCP 報文的 Flags:
而第二條數(shù)據(jù)的 [S.] 表示 SYN-ACK ,就是 SYN 報文的應答報文。
如果是為了查看數(shù)據(jù)內(nèi)容,建議用 tcpdump -s 0 -w filename 把數(shù)據(jù)包都保存下來,然后用wireshark的Follow TCP Stream/Follow UDP Stream來查看整個會話的內(nèi)容。 -s 0 是抓取完整數(shù)據(jù)包,否則默認只抓68字節(jié)。用tcpflow也可以方便的獲取TCP會話內(nèi)容,支持tcpdump的各種表達式。
-c 參數(shù)對于運維人員來說也比較常用,因為流量比較大的服務器,靠人工CTRL+C還是抓的太多,甚至導致服務器宕機,于是可以用 -c 參數(shù)指定抓多少個包。
上面的命令計算抓10000個SYN包花費多少時間,可以判斷訪問量大概是多少。
Wireshark(以前是ethereal)是Windows下非常簡單易用的抓包工具。但在Linux下很難找到一個好用的圖形化抓包工具。
還好有Tcpdump。我們可以用Tcpdump + Wireshark 的完美組合實現(xiàn):在 Linux 里抓包,然后在Windows 里分析包。
0x4745 為"GET"前兩個字母"GE"
0x4854 為"HTTP"前兩個字母"HT"
tcpdump 對截獲的數(shù)據(jù)并沒有進行徹底解碼,數(shù)據(jù)包內(nèi)的大部分內(nèi)容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網(wǎng)絡故障,通常的解決辦法是先使用帶 -w 參數(shù)的tcpdump 截獲數(shù)據(jù)并保存到文件中,然后再使用其他程序(如 Wireshark )進行解碼分析。當然也應該定義過濾規(guī)則,以避免捕獲的數(shù)據(jù)包填滿整個硬盤。
基本上tcpdump總的的輸出格式為: 系統(tǒng)時間 來源主機.端口 > 目標主機.端口 數(shù)據(jù)包參數(shù)
二、如何使用命令查看當前活動的TCP連接、計算機偵聽的端口、以太網(wǎng)統(tǒng)計信息、IP路由表等信息
你好!
DOS命令:netstat
netstat 主機:查看主機當前的tcp/ip連接狀態(tài),如端口的狀態(tài)。
例子:netstat 192.168.1.1
返回值有 協(xié)議、本地端口地址、端口地址、端口狀態(tài)
輸入:netstat ?
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 顯示所有連接和監(jiān)聽端口。
-b 顯示包含于創(chuàng)建每個連接或監(jiān)聽端口的
可執(zhí)行組件。在某些情況下已知可執(zhí)行組件
擁有多個獨立組件,并且在這些情況下
包含于創(chuàng)建連接或監(jiān)聽端口的組件序列
被顯示。這種情況下,可執(zhí)行組件名
在底部的 [] 中,頂部是其調(diào)用的組件,
等等,直到 TCP/IP 部分。注意此選項
可能需要很長時間,如果沒有足夠權(quán)限
可能失敗。
-e 顯示以太網(wǎng)統(tǒng)計信息。此選項可以與 -s
選項組合使用。
-n 以數(shù)字形式顯示地址和端口號。
-o 顯示與每個連接相關(guān)的所屬進程 ID。
-p proto 顯示 proto 指定的協(xié)議的連接;proto 可以是
下列協(xié)議之一: TCP、UDP、TCPv6 或 UDPv6。
如果與 -s 選項一起使用以顯示按協(xié)議統(tǒng)計信息,proto 可以是下列協(xié)議
之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協(xié)議統(tǒng)計信息。默認地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統(tǒng)計信息;
-p 選項用于指定默認情況的子集。
-v 與 -b 選項一起使用時將顯示包含于
為所有可執(zhí)行組件創(chuàng)建連接或監(jiān)聽端口的
組件。
interval 重新顯示選定統(tǒng)計信息,每次顯示之間
暫停時間間隔(以秒計)。按 CTRL+C 停止重新
顯示統(tǒng)計信息。如果省略,netstat 顯示當前
配置信息(只顯示一次)
希望我的回答對你有所幫助~
三、誰能給我講 TCP/IP
分類: 電腦/網(wǎng)絡 >> 互聯(lián)網(wǎng)
解析:
TCP/IP(圖片請參考我的參考資料網(wǎng)址)
1. 前言
本文用于介紹TCP/IP協(xié)議的最基本內(nèi)容,十分簡單,也十分基本,如果希望了解詳細的內(nèi)容,請參閱其它資料,這只是給初學者用的。
2. TCP/IP介紹
TCP/IP通常指的是關(guān)于TCP和IP的任何東西,它是一個統(tǒng)稱,它既可以包括其它協(xié)議,其它應用程序,還可以包括網(wǎng)絡介質(zhì)。
2.1 基本結(jié)構(gòu)
為了理解這個技術(shù),最好稱理解下圖:
這個結(jié)構(gòu)存在于Inter中計算機之中,它決定了計算機在網(wǎng)絡上的動作。
2.2 名詞
數(shù)據(jù)塊的名稱會因為它處于不同的協(xié)議棧而不同。這里給出一個總結(jié):在以太網(wǎng)時,它稱為一個以太網(wǎng)幀,在IP上時,它稱為IP包,如果數(shù)據(jù)在IP和UPD之間一般稱為UDP數(shù)據(jù)報,而數(shù)據(jù)如果在IP和TCP之間,則稱為TCP段(或消息),而數(shù)據(jù)在應用程序中時,則稱為應用程序消息。這種定義不是絕對的,不同的文章會有不同的說法。
2.3 數(shù)據(jù)流
數(shù)據(jù)流從應用程序流向TCP或UDP,我們通常知道的FTP是應用TCP協(xié)議的,而SNMP協(xié)議卻是使用UDP協(xié)議的。數(shù)據(jù)由不同協(xié)議模塊流向同一個以太網(wǎng)適配器。由適配器將數(shù)據(jù)傳送到網(wǎng)絡介質(zhì)上去。上面的過程在接收方反向發(fā)生。
以太幀傳送到ARP或IP模塊中,而以太幀中的數(shù)據(jù)決定此數(shù)據(jù)是由IP還是由ARP處理。如果是供IP處理的包,則由IP模塊直接傳送給TCP或UPD,具體傳送給誰這由IP包頭決定。而UDP包內(nèi)的數(shù)據(jù)決定了應該由UPD協(xié)議上層的哪一個應用程序接收這個數(shù)據(jù),這一點和TCP是一致的。數(shù)據(jù)在從應用程序下傳到網(wǎng)絡時,過程比較簡單,各層把在數(shù)據(jù)上加入自己的包頭信息,然后傳送給下一層就行了。雖然Inter支持多種網(wǎng)絡介質(zhì),但是一般我們都拿以太網(wǎng)范例。這里我們需要記住的是以太地址是唯一的,全球唯一的。計算機同時也擁有一個四個字節(jié)的IP地址,這個地址用于標記IP模塊的地址,但對于Inter來說,IP地址不見得是唯一的。一臺運行著的計算機通常知道自己的IP地址和以太地址。
2.4 兩個網(wǎng)絡接口
下圖中一臺計算機連接了兩個以太網(wǎng)。
請注意:上圖中的計算機擁有兩個IP地址和以太地址。這時IP模塊將對應于多個物理適配器。
多個IP模塊對應多個物理適配器時,情況要復雜一些。
上圖說明了IP轉(zhuǎn)發(fā)的過程,專用于轉(zhuǎn)發(fā)IP包的計算機我們稱為IP路由器。從上圖中我們可以看出,IP轉(zhuǎn)發(fā)的時候根本不需要TCP和UDP,所以有些IP路由器的實現(xiàn)中根本沒有TCP和UPD模塊。
2.5 IP創(chuàng)建信號邏輯網(wǎng)絡
數(shù)據(jù)在從應用程序向網(wǎng)絡介質(zhì)傳送的過程中,被各種協(xié)議加上包頭,而由網(wǎng)絡介質(zhì)向應用程序傳送時,這些加入的包頭被一個個取消,而IP層加入的信息構(gòu)成了一個邏輯網(wǎng)絡,這個邏輯網(wǎng)絡是相對于多個物理網(wǎng)絡而言的。多個物理網(wǎng)絡相互連接,就是我們現(xiàn)在經(jīng)常聽到的Inter的由來。
2.6 物理網(wǎng)絡獨立性
IP將下層的網(wǎng)絡結(jié)構(gòu)對上層的應用程序隱藏起來,如果您發(fā)明了一種新的網(wǎng)絡,您只需要實現(xiàn)一種驅(qū)動程序,讓它能夠和IP進行通信就可以使您的網(wǎng)絡連接入Inter。
2.7 互連性
如果Inter上的兩臺計算機能夠進行通信,我們稱它們互連了。我們的計算機一般都具有互連性,因此我們購買的計算機一般都可以在網(wǎng)絡上相互通信。
3. Ether
下面我們看看以太技術(shù),一個以太幀包括源地址,目的地址,類型域和數(shù)據(jù)。一個以太地址6個字節(jié),每個以太適配器都有唯一的以太地址,而地址"FF-FF-FF-FF-FF-FF"代表一個廣播地址。以太網(wǎng)使用CSMA/CD技術(shù),這個技術(shù)使設備共享一條傳輸介質(zhì),某一時刻只能一臺設備傳送數(shù)據(jù),如果兩臺同時傳送就會產(chǎn)生沖突,而解釋這種沖突的辦法就是兩個設備停一會兒(一個隨機的時間)再傳送數(shù)據(jù)。
我們可以把以太技術(shù)想成許多人在一個黑屋子里說話,如果每次只有一個人說,那么對這個話感興趣的人就會聽到,記錄下來,而不感興趣的人就不管它就是了。如果兩個人同時說,兩個人就會聽到自己在說話的時候還有另外一個人也在說,于是就停下來,過一會兒再說,這樣來達到傳送消息的目的。這里需要注意的是,屋子里的每個人有一個唯一的名字,這個名字就是以太地址,而如果某個人想對所有人說話,它就應用那個廣播地址傳送消息就可以了。
4. ARP
ARP是為了解決IP包發(fā)出后,目的以太地址如何確定的問題。ARP是用來將IP地址解釋為以太地址的協(xié)議,這個協(xié)議只對由IP傳出的數(shù)據(jù)有用。
4.1 ARP地址翻譯表
這個翻譯的過程中通過查詢一張表進行的,每個機器的IP地址和以太網(wǎng)卡號就在這個表中,如果我想向一個IP地址發(fā)送消息,只需要查詢一下這張表,知道目的以太地址是什么就可以了。下面就是一張這個的ARP表:
IP地址 以太地址
223.1.2.1 08-00-39-00-2F-C3
223.1.2.3 08-00-5A-21-A7-22
223.1.2.4 08-00-10-99-AC-54
圖1. ARP表
IP地址在機器內(nèi)部是一個4字節(jié)數(shù),而人類的表示是如上表中的表示方法,這種方法稱為點為十進制。這種翻譯表是必須的,因為IP地址的選擇和以太地址的選擇是獨立進行的。以太地址是生產(chǎn)廠商根據(jù)分配給它的地址空間直接燒結(jié)在網(wǎng)卡上的。
4.2 經(jīng)典的翻譯過程
在通常網(wǎng)絡操作進行時,應用程序發(fā)送消息到TCP(或UDP),由TCP(或UDP)傳送消息到IP模塊,目的IP地址是已知的,在將這個包傳送到以太適配器時一定要查找這個翻譯表知道目的以太地址是什么。而這時ARP就管用了。
4.3 ARP請示/響應對
但是,ARP表如何從空變得那么充實呢?這是由ARP協(xié)議來完成填充工作的,它工作的基本過程是“需時再取”的原則。當ARP不能用于查詢以太地址時,會發(fā)生下面兩件事情:
1. ARP用以太廣播地址發(fā)送一個以太包到網(wǎng)絡上,所有的計算機都會接收到這個包;
2. 將需要發(fā)送的IP包放入發(fā)送隊列中;
發(fā)出的那個以太包就象一個問路的人一樣,它帶有如下信息:“如果您的IP地址和我想找的IP地址一樣,請告訴我您的以太地址”,下面是一個ARP請示包的例子:
發(fā)送者IP地址 223.1.2.1
發(fā)送者以太地址 08-00-39-00-2F-C3
目標IP地址 223.1.2.2
目標以太地址 (空)
表2. ARP請示包例子
每臺計算機的ARP模塊檢查自己的IP地址是不是和這個包內(nèi)的IP地址一致,如果不一致,就什么也不干,如果一致,則返回一個響應,其中包括的信息指出了這個IP地址的以太地址。下面是一個響應包的例子:
發(fā)送者IP地址 223.1.2.2
發(fā)送者以太地址 08-00-28-00-38-A9
目標IP地址 223.1.2.1
目標以太地址 08-00-39-00-2F-C3
表3. ARP響應包例子
這個響應由原來發(fā)出請求的計算機接收,ARP就將相應的IP地址和以太地址加入ARP表中,這個過程不斷地發(fā)生,這個表也就不斷地加大了,更新過的ARP表如下圖所示:
IP地址 以太地址
223.1.2.1 08-00-39-00-2F-C3
223.1.2.2 08-00-28-00-38-A9
223.1.2.3 08-00-5A-21-A7-22
223.1.2.4 08-00-10-99-AC-54
表4. 更新后的ARP表
這個請求與響應的過程十分迅速,放入隊列的IP包現(xiàn)在可以取出發(fā)送了,因為所需要的以太地址已經(jīng)有了,可以發(fā)送了。如果沒有目的主機,發(fā)出的請求就不會有回應,IP層拋棄需要發(fā)送的IP包,而上層協(xié)議也不清楚是網(wǎng)絡斷了,還是不存在目的主機,IP層不負責報告錯誤類型。
5. Inter協(xié)議
IP模塊是Inter技術(shù)的核心,而它的路由技術(shù)是它成為核心的基礎。了解路由需要也解互連是什么。
5.1 直接路由
下圖是一個只有三臺計算機的小網(wǎng)絡,每臺計算機有運行一個TCP/IP協(xié)議棧,每個計算機配有以太適配器,每個計算機都被指定一個獨立的IP地址。
當A發(fā)送IP包到B時,IP包頭包括A的IP地址(這是源地址)和A的以太地址(這是源以太地址);同時這個包也包括B的IP地址和以太地址作為目的地址。
地址 源 目的
IP頭 A B
以太頭 A B
表5. 從A到B的IP包
在這種情況下,使用IP是多余的,因為它根本沒有起到什么作用,用IP只能增加多余的處理時間,占用了多余的傳輸帶寬。B接收到這個包后,IP層檢查這個包內(nèi)的目的地址是不是和自己的IP地址一致,如果一致則將數(shù)據(jù)返回給上層協(xié)議。這稱為直接路由。
5.2 間接路由
下面這個示意圖更接近Inter真實的情況。三個小的以太網(wǎng),每個網(wǎng)絡中有三臺計算機,它們有唯一以太地址,IP地址,這三個網(wǎng)絡通過一臺路由器連接,這臺路由器有一個IP地址和三個以太地址,因為它和三個網(wǎng)絡連接,當然要三個了。這里一定要記住,IP地址只有一個。
計算機D是一臺路由器,它的TCP/IP協(xié)議棧內(nèi)可能根本沒有TCP和UDP,而可能有多個ARP模塊和多個以太驅(qū)動程序(因為有多個以太適配器,所以要多個驅(qū)動程序才可以)。網(wǎng)絡管理員為每個子網(wǎng)(上圖中有三個子網(wǎng))指定一個網(wǎng)絡號,是這個網(wǎng)絡的名稱,這個名稱在上圖是沒有表示。
如果計算機A希望和計算機B通信,采用直接路由就可以了。這個過程上面已經(jīng)說過了。在同一個子網(wǎng)內(nèi)均采用直接路由。如果計算機D希望和計算機A通信,這也是直接路由,直接通信就行了,D和其它所有計算機的通信都是直接通信。但是如果計算機A希望和非本子網(wǎng)內(nèi)的計算機通信就不能采用直接路由了,它發(fā)送的IP包必須發(fā)到計算機D,由計算機D向其它網(wǎng)絡發(fā)送,這種通信就是非直接的。
路由對于IP協(xié)議上層的協(xié)議來說是透明的,它們根本不知道有什么路由存在。
請注意下面的圖,源地址是計算機A的,目的IP地址是計算機E,而目的以太地址卻是計算機D的,這是因為計算機A和計算機E不處于同一個子網(wǎng)內(nèi),不能直接通信,需要由計算機D進行轉(zhuǎn)發(fā),因此這包只能發(fā)往計算機。
地址 源 目的
IP頭 A E
以太頭 A D
表6. 從計算機A到計算機E以太幀示意圖
對于計算機D來說,它的以太幀地址如下:
地址 源 目的
IP頭 A E
以太頭 D E
表7. 從計算機D到計算機E以太幀示意圖
因為計算機D和計算機E可以直接通信。我們可以看到,在直接通信時,目的IP地址和以太地址都是接收者的,而在非直接通信時,目的IP地址是接收者的,而目的以太地址卻是路由器的。上面的例子比較簡單,真實的路由要比這個復雜得多,因為現(xiàn)實中的網(wǎng)絡十分大,要許多路由器同時工作,這時的情況就比較復雜了。
5.3 IP路由規(guī)則
對于要發(fā)出的IP包,IP必須決定如何發(fā)送,是采用直接發(fā)送還是非直接發(fā)送,這是在路由表的幫助下完成的。對于傳入的IP包,IP模塊必須能夠識別它是不是自己需要的包,如果是自己需要的,就把數(shù)據(jù)傳送到上一層協(xié)議中,如果不需要則進行轉(zhuǎn)發(fā)。在IP包達到目的地址后,它不再轉(zhuǎn)發(fā)了。
5.4 IP地址
IP地址是由網(wǎng)絡管理者為一臺計算機指定的地址,IP地址的一部分作為網(wǎng)絡號,另一部分作為網(wǎng)絡中的主機號。具體內(nèi)容請大家查詢相關(guān)資料。IP地址是由NIC管理的,所有直接連接到Inter上的計算機如果需要IP地址,必須和NIC聯(lián)系,則它指定;如果您需要建立自己的網(wǎng)絡,那相應的網(wǎng)絡號也需要從NIC取得。
5.5 名稱
人們喜歡使用計算機的名稱,而不喜歡使用數(shù)字來標記一臺計算機,對于小型網(wǎng)絡,計算機名和IP地址的對應表可以保存在每臺計算機上,如果是一個大型網(wǎng)絡,則需要一臺專用的計算機來負責IP地址到計算機名的轉(zhuǎn)換。下面就是一個IP地址和計算機名的對應表。
223.1.2.1 alpha
223.1.2.2 beta
223.1.2.3 gamma
223.1.2.4 delta
223.1.3.2 epsilon
223.1.4.2 iota
前一列是IP地址,后一列是計算機名。您可以為一個計算機名指定多個IP地址,那么通過哪一個IP地址都可以訪問這臺計算機。這個擁有多個IP地址的計算機在接收到包后,可以根據(jù)目的地址知道是不是發(fā)向自己的包,這個目的地址可以是自己的任何一個地址。名稱也用于網(wǎng)絡號,下面就是一個例子:
223.1.2 development
223.1.3 accounting
223.1.4 factory
前一列是IP地址,后一列是網(wǎng)絡名。我們可以這個表上面的表對比一下,看看各個計算機屬于什么網(wǎng)絡。
5.6 IP路由表
我們上面已經(jīng)提到過路由表這個名詞,下面我們就仔細看一下這張表。它通常是由下面幾列構(gòu)成的:IP網(wǎng)絡號,直接/非直接標記,路由器IP地址和接口號。這張表一般由管理員負責維護,因為是他為你的計算機指定了IP地址。
5.7 直接路由
下面我們仔細看一下我們上面看過的直接路由的例子。
在計算機alpha內(nèi)的路由表如下所示:
網(wǎng)絡 直接/非直接標記 路由器 接口號
development 直接 (空) 1
表8. 路由表范例
我們可能通過UNIX下的"stat -r"命令看到類似這樣的結(jié)果。
5.8 實例
Alpha發(fā)送IP包到beta,alpha中的IP包的目的地址是beta的地址(223.1.2.2)。IP取得網(wǎng)絡號部分,查詢路由表中的第一部分,看這個包應該包到什么地方,它發(fā)現(xiàn)這個網(wǎng)絡和表中的第一個項目一致。而這個項目中的其它信息表示,目的計算機可以直接通信,于是直接進行ARP翻譯(解析),通過接口1發(fā)送數(shù)據(jù)。
5.9 非直接路由
下面我們仔細看一下我們上面看過的非直接路由的例子。
計算機alpha內(nèi)的路由表如下所示:
網(wǎng)絡 直接/非直接標記 路由器 接口號
development 直接 (空) 1
accounting 非直接 devrouter 1
factory 非直接 devrouter 1
表10. Alpha內(nèi)的路由表
5.10 實例
Alpha發(fā)送IP包到epsilon,IP包內(nèi)的目的地址是epsilon的(223.1.3.2)。IP分析目的地址的網(wǎng)絡號部分,查詢路由表中的第一列,發(fā)現(xiàn)第二個項目符合條件。此項目中的信息表示計算機可以由路由器devrouter達到,Alpha的IP模塊進行ARP解析,將數(shù)據(jù)通過接口1傳送到devrouter的IP地址上。這個包仍然包括著目的機IP地址223.1.3.2。這個包到達development網(wǎng)絡接口,傳送到delta計算機的IP模塊,delta計算機發(fā)現(xiàn)這個包不是給它的,于是決定轉(zhuǎn)發(fā)。Delta的IP模塊從目的地址中解析出網(wǎng)絡號,查詢路由表,Delta的路由表如下所示:
網(wǎng)絡 直接/非直接標記 路由器 接口號
development 直接 (空) 1
factory 直接 (空) 3
accounting 直接 (空) 2
表11. Delta的路由表
第二條符合條件,于是IP模塊接口3將數(shù)據(jù)發(fā)送到計算機epsilon,IP包到達epsilon時,epsilon的IP模塊發(fā)現(xiàn)目的地址和自己的一致,于是將接收到的數(shù)據(jù)向上一層協(xié)議傳送。
5.11 路由總結(jié)
在一個大型網(wǎng)絡中,IP包在到達目的計算機前一般需要經(jīng)過多個路由器,它前進的路線不是事先定好的,而是在各個路由器上一步步查詢出來的,每個計算機只管一段,只保證把數(shù)據(jù)傳送到下一站,至于下一站怎么辦,它就不管了。
5.12 管理路由
在大型網(wǎng)絡的每臺機器上支持一張路由表可不是件容易事,路由器如果出了問題會對網(wǎng)絡傳輸不能進行。我們也可以使用ICMP協(xié)議對網(wǎng)絡進行監(jiān)控。一臺機器從一個地方移到另一個地方必須更改計算機的IP地址,如果要更新主機地址文件,這簡單是不可能的,而DNS幫助解決這個問題。
6. 用戶數(shù)據(jù)報協(xié)議(UDP)
UDP是在IP上的兩個重要協(xié)議之一,它為用戶的網(wǎng)絡應用程序提供服務,我們經(jīng)常使用的NFS,SNMP就是使用UDP協(xié)議的。UDP協(xié)議不是面向連接的。這一點是和TCP協(xié)議不同的。UDP在IP包上加上了端口號和校驗碼兩個參數(shù)。
6.1 端口
一臺計算機上的客戶程序如何達到服務器呢?應用程序和UDP的通信線路是通過UDP端口一樣的,這些端口是數(shù)字的,以0開始,一個端口一般和一個服務對應。服務器和客戶就在這個端口等待對方的請求(或應答)。UDP保留由應用程序定義的消息邊界。它決不把兩個消息連接起來,或把一個消息分成兩部分。
6.2 校驗碼
如果接收到的IP包內(nèi)有一個標記“UDP”,IP模塊就把數(shù)據(jù)傳送到UDP,UDP檢查校驗碼,如果運算得出的結(jié)果為0,數(shù)據(jù)是正確的。UDP的校驗碼可以產(chǎn)生也可以不產(chǎn)生。傳送來的UDP包如果超過了上層應用程序的處理能力,就會暫時保存起來,如果保存的數(shù)據(jù)已經(jīng)超過一定限制,則把UDP丟棄。
7. 傳輸控制協(xié)議(TCP)
TCP提供的服務不同于UDP,它們的最大區(qū)別在于TCP是面向連接的,TCP保證數(shù)據(jù)一定傳送到接收者,而UDP可不保證。TCP用于一定要保證數(shù)據(jù)傳輸?shù)膱龊?,我們通常知道的FTP,TELNET是基于TCP協(xié)議的,而其它的一些TCP網(wǎng)絡應用程序包括X-Window系統(tǒng),rcp(遠程復制)和R系列命令也是使用TCP的,TCP提供這樣好的服務也是有代價的,它需要更多的CPU處理時間和網(wǎng)絡帶寬,TCP模塊的復雜度也比UDP大得多。
與UDP相同的是,應用程序必須和TCP端口連接請求服務,接收和發(fā)送數(shù)據(jù)。在應用程序開始運行時,服務器和客戶機上的TCP模塊開始相互通信,這兩個TCP包含了狀態(tài)信息,維持一條虛鏈路,這條虛鏈路是全雙工的。TCP可以任意打包數(shù)據(jù),不必管什么邊界。例如,應用程序可以在一個端口寫5次,遠方的應用程序可以讀10次把數(shù)據(jù)讀完,這和UDP不同,在UDP下,在一個端口寫幾次,遠程應用程序就要讀幾次。
TCP支持滑動窗口協(xié)議,雙方都進行流量控制,因此不會讓緩沖區(qū)滿。這也和UDP不同,在UDP的情況下,緩沖區(qū)可能因為應用程序的處理能力不足而變滿。對于滑動窗口協(xié)議,它指定了一個窗口大小,這個大小指的是,在未接收到確認信息之前允許發(fā)送的數(shù)據(jù)數(shù),在TCP中,窗口的大小是以字節(jié)為單位的。
8. 網(wǎng)絡應用程序
TCP和UDP提供不同的服務,不同的應用程序會選擇不同的協(xié)議,這里請您注意,如果您選擇使用UDP進行可靠傳輸,那只能在UDP上層來提供可靠性。下面我們舉出幾個常用的應用程序。
TELNET使用TCP提供遠程登錄。TELNET工作得非常好,它雖然古老,但是現(xiàn)在仍然在廣泛使用,它經(jīng)常用于在不同的操作系統(tǒng)間進行互連。 FTP協(xié)議和TELNET歲數(shù)差不多大了,它也使用TCP服務,在FTP時,您好象登錄到遠程計算機上,但您能夠使用的命令卻不那么多,F(xiàn)TP提供用戶在計算機間復制文件的服務。UNIX中的遠程命令一般都以R開始,這些命令一般都通過網(wǎng)絡進行,我們就稱它們?yōu)镽系列命令,這些命令通常在UNIX系統(tǒng)中使用,它對安全性考慮不多,但是非常好用。NFS由Sun公司開發(fā),它使用UDP,它用于在不同的計算機上加載UNIX文件系統(tǒng),在這一點上它做得非常好。NFS為網(wǎng)絡加重了負擔,在慢速連接的網(wǎng)絡上工作得不好,但它的功能可卻是不錯。隨著網(wǎng)絡規(guī)模不斷擴大,原來的網(wǎng)絡管理協(xié)議ICMP已經(jīng)不能提供滿意的服務了,于是在這一要求下提出了SNMP協(xié)議,它檢測網(wǎng)絡中各種設備的情況,根據(jù)這種情況對網(wǎng)絡進行監(jiān)控。X Window系統(tǒng)使用X Window協(xié)議,X Window協(xié)議也使用TCP服務
四、tcpdump抓包命令
1、tcpdump: 默認啟動。普通情況下,直接啟動tcpdump將監(jiān)視第一個網(wǎng)絡接口上所有流過的數(shù)據(jù)包。
2、tcpdump -i eth1:監(jiān)視指定網(wǎng)絡接口的數(shù)據(jù)包,如果不指定網(wǎng)卡,默認tcpdump只會監(jiān)視第一個網(wǎng)絡接口,一般是eth0,下面的例子都沒有指定網(wǎng)絡接口?!?/p>
3、tcpdump host sundown:監(jiān)視指定主機的數(shù)據(jù)包。打印所有進入或離開sundown的數(shù)據(jù)包。
4、tcpdump -i eth0 src host hostname:截獲主機hostname發(fā)送的所有數(shù)據(jù)。
5、tcpdump -i eth0 dst host hostname:監(jiān)視所有送到主機hostname的數(shù)據(jù)包。
6、tcpdump tcp port 23 and host 210.27.48.1:如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包。
7、tcpdump udp port 123:對本機的udp 123 端口進行監(jiān)視 123 為ntp的服務端口。
以上就是關(guān)于Tcp命令相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
寧波現(xiàn)代景觀設計咨詢公司(寧波現(xiàn)代景觀設計咨詢公司有哪些)