ARP地址解析協(xié)議:用來獲取目標IP地址所對應的MAC地址的
例:某用戶通過主機A瀏覽西安交大的主頁 www.xjtu.edu.cn
1. A向本地域名服務器DNS查詢
2. 如果DNS上有www.xjtu.edu.cn的記錄,就立即返回IP地址給主機A
3. 如果DNS上沒有該域名記錄,則DNS向根域名服務器發(fā)出查詢請求
4. 根域名服務器把負責cn域的頂級域名服務器B的IP地址告訴DNS
5. DNS向B查詢獲得二級域名服務器C的IP地址,最終迭代查詢到www.xjtu.edu.cn的ip直接返回DNS
常用的 HTTP 請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;
GET:當客戶端要從服務器中讀取某個資源時,使用GET 方法。GET 方法要求服務器將URL 定位的資源放在響應報文的部分,回送給客戶端,即向服務器請求某個資源。使用GET 方法時,請求參數(shù)和對應的值附加在 URL 后面,利用一個問號(“?”)代表URL 的結(jié)尾與請求參數(shù)的開始,傳遞參數(shù)長度受限制。例如,/index.jsp?id=100&op=bind。
POST:當客戶端給服務器提供信息較多時可以使用POST 方法,POST 方法向服務器提交數(shù)據(jù),比如完成表單數(shù)據(jù)的提交,將數(shù)據(jù)提交給服務器處理。GET 一般用于獲取/查詢資源信息,POST 會附帶用戶數(shù)據(jù),一般用于更新資源信息。POST 方法將請求參數(shù)封裝在HTTP 請求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù);
請求頭部:請求頭部由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用英文冒號“:”分隔。請求頭部通知服務器有關(guān)于客戶端請求的信息,典型的請求頭有:
狀態(tài)碼由三位數(shù)字組成,第一位數(shù)字表示響應的類型,常用的狀態(tài)碼有五大類如下所示:
200 OK:表示客戶端請求成功;
400 Bad Request:表示客戶端請求有語法錯誤,不能被服務器所理解;
401 Unauthonzed:表示請求未經(jīng)授權(quán),該狀態(tài)代碼必須與 WWW-Authenticate 報頭域一起使用;
403 Forbidden:表示服務器收到請求,但是拒絕提供服務,通常會在響應正文中給出不提供服務的原因;
404 Not Found:請求的資源不存在,例如,輸入了錯誤的URL;
500 Internal Server
Error:表示服務器發(fā)生不可預期的錯誤,導致無法完成客戶端的請求;
503 Service Unavailable:表示服務器當前不能夠處理客戶端的請求,在一段時間之后,服務器可能會恢復正常;
響應頭部:響應頭可能包括:
- Location:Location響應報頭域用于重定向接受者到一個新的位置。例如:客戶端所請求的頁面已不存在原先的位置,為了讓客戶端重定向到這個頁面新的位置,服務器端可以發(fā)回Location響應報頭后使用重定向語句,讓客戶端去訪問新的域名所對應的服務器上的資源;
- Server:Server 響應報頭域包含了服務器用來處理請求的軟件信息及其版本。它和 User-Agent 請求報頭域是相對應的,前者發(fā)送服務器端軟件的信息,后者發(fā)送客戶端軟件(瀏覽器)和操作系統(tǒng)的信息。
- Vary:指示不可緩存的請求頭列表;
- Connection:連接方式;
對于請求來說:close(告訴WEB 服務器或者代理服務器,在完成本次請求的響應后,斷開連接,不等待本次連接的后續(xù)請求了)。keepalive(告訴WEB服務器或者代理服務器,在完成本次請求的響應后,保持連接,等待本次連接的后續(xù)請求);
對于響應來說:close(連接已經(jīng)關(guān)閉); keepalive(連接保持著,在等待本次連接的后續(xù)請求); Keep-Alive:如果瀏覽器請求保持連接,則該頭部表明希望WEB 服務器保持連接多長時間(秒);例如:Keep-Alive:300;
問題:
1. Http1.1與Http1.0的區(qū)別
http1.0使用非持久連接(短連接),而http1.1默認是持久連接(長連接),當然也可以配置成非持久連接。
應用 | 應用層協(xié)議 | 運輸層協(xié)議 |
---|---|---|
名字轉(zhuǎn)換 | DNS(域名系統(tǒng)) | UDP |
文件傳送 | TFTP(簡單文件傳送協(xié)議) | UDP |
路由器選擇協(xié)議 | RIP(路由信息協(xié)議) | UDP |
IP地址配置 | DHCP(動態(tài)主機配置協(xié)議) | UDP |
網(wǎng)絡(luò)管理 | SNMP(簡單網(wǎng)絡(luò)管理協(xié)議) | UDP |
遠程服務器 | NFS(網(wǎng)絡(luò)文件系統(tǒng)) | UDP |
多播 | IGMP(網(wǎng)際組管理協(xié)議) | UDP |
電子郵件 | SMTP(簡單郵件傳送協(xié)議) | TCP |
遠程終端 | TELNET(遠程終端協(xié)議) | TCP |
萬維網(wǎng) | HTTP(超文本傳送協(xié)議) | TCP |
文件傳送 | FTP(文件傳送協(xié)議) | TCP |
- 端口
TCP和UDP都需要有源端口和目的端口
(端口:用16位來表示,即一個主機共有65536個端口.序號小于256的端口稱為通用端口,如FTP是21端口,WWW是80端口等.端口用來標識一個服務或應用.一臺主機可以同時提供多個服務和建立多個連接.端口(port)就是傳輸層的應用程序接口.應用層的各個進程是通過相應的端口才能與運輸實體進行交互.服務器一般都是通過人們所熟知的端口號來識別的)
服務端
常用的熟知端口
應用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) |
---|---|---|---|---|---|---|---|---|
熟知端口 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 |
登記端口 1024~49151
客戶端
端口號由客戶進程動態(tài)選擇。數(shù)值范圍 49152~65535
- 源端口:2字節(jié) = 16bit = 0 ~ 65535
- 目的端口:2字節(jié)
- 長度:2字節(jié)
- 檢驗和:2字節(jié)
如果接受方UDP發(fā)現(xiàn)收到的報文中的目的端口號不正確(不存在對應端口號的應用進程),就會丟棄報文,并有網(wǎng)際控制報文協(xié)議ICMP(ping某個地址就是用的ICMP)發(fā)送“端口不可達”差錯報文給發(fā)送方。
UDP用戶數(shù)據(jù)報首部檢驗和計算時會在UDP用戶數(shù)據(jù)報前增加12個字節(jié)的偽首部。
TCP與UDP在發(fā)送報文時所采用的方式完全不同。TCP具體發(fā)送的報文由接收方給出的窗口值和當前網(wǎng)絡(luò)擁塞的程度來決定一個報文段包含多少字節(jié)。而UDP發(fā)送的報文長度由應用進程給出。
TCP連接的端點叫做套接字(socket)或插口。套接字socket = (IP地址:端口號)
每發(fā)送完一個分組就設(shè)置一個超時計時器。
- 注意:
1. 必須暫時保存已發(fā)送的分組的副本
2. 分組和確認分組都必須編號
3. 超市計時器設(shè)置的重傳時間比數(shù)據(jù)在分組傳輸?shù)钠骄鶗r間更長一些
如果接收方接收到數(shù)據(jù)發(fā)送確認沒有被發(fā)送方接收到,那么發(fā)送方超時后會重新發(fā)送分組,并且接收方收到重復的分組會丟棄并重傳確認。
如果接收方收到的確認是已經(jīng)接受過的,那么會無視這個確認。
停止等待協(xié)議(自動重傳ARQ)雖然簡單,但是信道利用率低。
信道利用率U = TD / (TD + RTT + TA)
1. 客戶端發(fā)送連接釋放報文段,報文中FIN = 1, seq = u;
2. 服務端接收到連接釋放報文后發(fā)出確認報文,其中ACK = 1; seq = v; ack = u + 1;
3. 服務端在發(fā)送完數(shù)據(jù)后,發(fā)送連接釋放報文FIN = 1, seq = w, ack = u + 1;并停止向客戶端發(fā)送數(shù)據(jù)。
4. 客戶端收到連接釋放報文后,發(fā)送確認報文, ACK = 1; seq = u + 1; ack = w + 1;并且進入等待2MSL,防止服務端沒有接收到確認報文,重傳報文。并且使連接產(chǎn)生的報文都消失。
TCP協(xié)議的連接是全雙工連接,一個TCP連接存在雙向的讀寫通道。
簡單說來是 “先關(guān)讀,后關(guān)寫”,一共需要四個階段。以客戶機發(fā)起關(guān)閉連接為例:
1. 服務器讀通道關(guān)閉
2. 客戶機寫通道關(guān)閉
3. 客戶機讀通道關(guān)閉
4. 服務器寫通道關(guān)閉
流量控制針對的是點對點之間的(發(fā)送方和接收方)之間的速度匹配服務,因為接收方的應用程序讀取的速度不一定很迅速,而接收方的緩存是有限的,就需要避免發(fā)送的速度過快而導致的問題。擁塞控制是由于網(wǎng)絡(luò)中的路由和鏈路傳輸速度限制,要避免網(wǎng)絡(luò)的過載和進行的控制。
擁塞控制算法主要包含了三個部分:慢啟動、擁塞避免和快速回復
慢開始算法的思路就是,不要一開始就發(fā)送大量的數(shù)據(jù),先探測一下網(wǎng)絡(luò)的擁塞程度,也就是說由小到大逐漸增加擁塞窗口的大小。一般一開始為1個MSS,之后翻倍這樣來增加,呈指數(shù)增長。其中1、慢啟動過程有一個閾值ssthresh,一旦到達閾值就進入擁塞避免模式。這是第一種離開結(jié)束慢啟動的方式2、如果收到了一個丟包提示,就將cwnd設(shè)為1并且重新開始慢啟動過程,這時要把閾值ssthresh設(shè)為當前cwnd值的一半。3、如果收到了三次冗余的ACK,就執(zhí)行一次快速重傳并且進入快速恢復狀態(tài),這是最后一種結(jié)束慢啟動的過程。
進入擁塞避免說明cwnd值大約是上一次遇到擁塞是的一半,這時候不能翻倍,而是將cwnd的值每次增加一個MSS。結(jié)束的過程有兩種可能:1、當出現(xiàn)超時時,將cwnd值設(shè)為1個MSS,并且將ssthresh閾值設(shè)為當前cwnd值的一半。2、當收到三個冗余ACK時,將ssthresh閾值設(shè)為當前cwnd值的一半,并且將cwnd值設(shè)為當前cwnd值的一半加3,即ssthresh閾值加3,并且進入快速恢復狀態(tài)。
快速恢復就是指進入快速恢復前的一系列操作,即將ssthresh閾值設(shè)為當前cwnd值的一半,并且將cwnd值設(shè)為當前cwnd值的一半加3,即ssthresh閾值加3,之后進入擁塞避免狀態(tài),即每次cwnd的值加1個MSS。
IP地址分類:
- A類:1.0.0.0~126.255.255.255,默認子網(wǎng)掩碼/8,即255.0.0.0 (其中127.0.0.0~127.255.255.255為環(huán)回地址,用于本地環(huán)回測試等用途);
B類:128.0.0.0~191.255.255.255,默認子網(wǎng)掩碼/16,即255.255.0.0;
C類:192.0.0.0~223.255.255.255,默認子網(wǎng)掩碼/24,即255.255.255.0;
D類:224.0.0.0~239.255.255.255,一般于用組播
E類:240.0.0.0~255.255.255.255(其中255.255.255.255為全網(wǎng)廣播地址),E類地址一般用于研究用途