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