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