传输层TCP/UDP协议
可靠的TCP協(xié)議(傳輸層)
????1)? TCP封包結(jié)構(gòu)如下圖:
????各字段的含義為:
????封包序號(hào):記錄每個(gè)封包的序號(hào),當(dāng)TCP封包大于IP封包的長(zhǎng)度時(shí),TCP封包就需要拆分成更小的包,來(lái)下發(fā)給網(wǎng)絡(luò)層,通過(guò)該字段可以讓接收端重新將TCP數(shù)據(jù)組合起來(lái)。
????回應(yīng)序號(hào):回傳給客戶端的響應(yīng)碼,當(dāng)客戶端收到這個(gè)確認(rèn)碼時(shí),就能夠確定之前傳遞的封包已經(jīng)被正確的收下了。
????資料補(bǔ)償:由于Options字段是任意的,為了確認(rèn)整個(gè)封包的大小,就用這個(gè)字段來(lái)說(shuō)明整個(gè)封包區(qū)段的起始位置。
????保留:保留字段,還未被使用。
????控制標(biāo)志碼:用來(lái)說(shuō)明聯(lián)機(jī)的狀態(tài),以讓接收端了解這個(gè)封包的主要?jiǎng)幼?#xff0c;這個(gè)字段共六位,代表六個(gè)句柄,若為1則表示啟動(dòng),每位含義分別為:
?????? URG(Urgent):若為1表示該封包為緊急封包,接收端應(yīng)該緊急處理,且Urgen Pointer字段也會(huì)被啟用。
?????? ACK(Acknowledge):若為1表示這個(gè)封包為響應(yīng)封包
?????? PSH(Push function):若為1,代表要求對(duì)方立即傳送緩沖區(qū)內(nèi)的其他對(duì)應(yīng)封包,而無(wú)需等待緩沖區(qū)滿了才送。
?????? RST(Reset):若為1,表示聯(lián)機(jī)會(huì)馬上結(jié)束,而無(wú)需等待終止確認(rèn)手續(xù)。也就是說(shuō),這是個(gè)強(qiáng)制結(jié)束的聯(lián)機(jī),且發(fā)送端已斷線。
?????? SYN(Synchronous):若為1,表示發(fā)送端希望雙方建立同步處理,也就是要求建立聯(lián)機(jī)。通常帶有SYN標(biāo)識(shí)的封包表示主動(dòng)要連接到對(duì)方的意思。
?????? FIN(Finish):若為1,表示傳送結(jié)束,所以通知對(duì)方數(shù)據(jù)傳畢,是否同意斷線,只是發(fā)送者還在等待對(duì)方的響應(yīng)而已。
????Window(滑動(dòng)窗口):主要用來(lái)控制封包的流量的,可以告知對(duì)方目前本身有的緩沖器容量(Receive Buffer)還可以接受封包。當(dāng)Window=0時(shí),代表緩沖器已經(jīng)滿額,所以應(yīng)該暫停傳輸數(shù)據(jù)。Window的單位是Bytes。
????確認(rèn)檢查碼:當(dāng)數(shù)據(jù)有發(fā)送端送出前,會(huì)進(jìn)行一個(gè)檢驗(yàn)的動(dòng)作,并將該動(dòng)作的檢驗(yàn)值標(biāo)注在這個(gè)字段上;而接受者收到這個(gè)封包之后,會(huì)再次對(duì)封包進(jìn)行驗(yàn)證,并且比對(duì)原發(fā)送的Checksum值是否相符,如果相符就接受,若不符就會(huì)假設(shè)該封包已經(jīng)損毀,進(jìn)而要求對(duì)方重新發(fā)送。
????緊急資料:告知緊急數(shù)據(jù)所在的位置。
????任意選項(xiàng):表示接收端可以接收的最大數(shù)據(jù)區(qū)段容量,若此字段不使用,表示可以使用任意數(shù)據(jù)區(qū)段的大小。這個(gè)字段較少使用。
????補(bǔ)足字段:將表頭長(zhǎng)度補(bǔ)齊為固定的長(zhǎng)度。
????2)? 端口號(hào)的最大值為65535(2的16次方減1),端口號(hào)小于1024的端口只用root身份才能啟動(dòng)對(duì)應(yīng)的服務(wù),因此叫做特權(quán)端口。常用的端口與服務(wù)如下:
????20:FTP-data,文件傳輸協(xié)議所使用的主動(dòng)數(shù)據(jù)傳輸端口。
????21:FTP,文件傳輸協(xié)議的命令通道
????22:ssh,較為安全的遠(yuǎn)程聯(lián)機(jī)服務(wù)器
????23:Telnet,早期的遠(yuǎn)程機(jī)器服務(wù)軟件
????25:SMTP,簡(jiǎn)單郵件傳遞協(xié)議,用在作為mail server的端口
????53:DNS,用在作為域名解析的服務(wù)器端口
????80:www服務(wù)器
????110:POP3,郵件收信協(xié)議
????443:https,有安全加密機(jī)制的www服務(wù)器
3)? TCP三次握手,如下圖所示:
????過(guò)程詳解:
????a)? A封包發(fā)起,當(dāng)客戶端想要對(duì)服務(wù)器端聯(lián)機(jī)時(shí),就必須要送出一個(gè)要求聯(lián)機(jī)的封包,此時(shí)客戶端必須隨機(jī)取用一個(gè)大于1024以上的端口來(lái)作為程序溝通接口。然后再TCP的表頭當(dāng)中,必須要帶有SYN的主動(dòng)聯(lián)機(jī)(SYN=1),并且記下發(fā)送出聯(lián)機(jī)封包給服務(wù)器端的序號(hào)(sequence number=10001)
????b)? B:封包接受與確認(rèn)封包傳送,當(dāng)服務(wù)器接到這個(gè)封包,并且確定要接受這個(gè)封包后,就會(huì)開(kāi)始制作一個(gè)同時(shí)帶有SYN=1,ACK=2的封包其中那個(gè)Acknowledge的號(hào)碼是要給client端確認(rèn)用的,所以該數(shù)字會(huì)比(a)里面的sequence number多一號(hào)(ack=10001+1=10002),那我們服務(wù)器也必須要確認(rèn)客戶端確實(shí)可以接收我們的封包才行,所以會(huì)發(fā)出一個(gè)Sequence(seq=20001),并且開(kāi)始等待客戶端給我們服務(wù)器的響應(yīng)。
????c)? C:會(huì)送確認(rèn)包當(dāng)客戶端收到來(lái)自服務(wù)端的ACK數(shù)字后(10002)就能確認(rèn)之前那個(gè)要求封包被正確的收受了,接下來(lái)如果客戶端也同意羽服務(wù)端建立聯(lián)機(jī)時(shí),就會(huì)再次的發(fā)送一個(gè)確認(rèn)封包(ACK=1)給服務(wù)器,亦即是Acknowledge=20001+1=2002.
????d)? D:取得最后的確認(rèn),若一切都順利,在服務(wù)器端接收到帶有ACK=1且ack=20002序號(hào)封包后,就能夠建立起這次的聯(lián)機(jī)了。
2.非連接的UDP協(xié)議
????1)? UDP(User Datagram Protocol,用戶數(shù)據(jù)流協(xié)議),非面向連接的協(xié)議,即在UDP的傳輸過(guò)程中,接受端在接受到封包之后,不會(huì)響應(yīng)封包(ACK)給發(fā)送端,所以封包并沒(méi)有像TCP封包有較為嚴(yán)格的檢查機(jī)制。
????2)? UDP封包結(jié)構(gòu)圖為:
????
????3)? UDP數(shù)據(jù)傳輸特點(diǎn):不可靠,但速度快,多用于實(shí)時(shí)性要求較高,但正確率不是很高的數(shù)據(jù)傳輸方式,如視頻傳輸。
3.網(wǎng)絡(luò)防火墻與OSI七層協(xié)議
????1)? 防火墻的原理:防火墻軟件對(duì)封包的表頭進(jìn)行分析,并且設(shè)定分析規(guī)則,當(dāng)發(fā)現(xiàn)某些特定的IP,特定的端口或者特定的封包信息(SYN/ACK等),就將該封包丟棄,這就是防火墻的原理。
????2)? OSI七層中,每層抵擋的數(shù)據(jù)有:
????第二層:可以針對(duì)來(lái)源與目標(biāo)的MAC進(jìn)行抵擋
????第三層:主要針對(duì)來(lái)源與目標(biāo)的IP,以及ICMP的類別(type)進(jìn)行抵擋
????第四層:針對(duì)TCP,UDP的端口進(jìn)行抵擋,也可以針對(duì)TCP的狀態(tài)(code)來(lái)進(jìn)行抵擋。
轉(zhuǎn)載于:https://blog.51cto.com/7613577/1608988
總結(jié)
以上是生活随笔為你收集整理的传输层TCP/UDP协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 天气预报开放API调用
- 下一篇: JDK1.6官方下载