內(nèi)容更新中
TCP
什么是TCP
TCP 頭
沾包和拆包
UDP
什么是UDP
UDP(User Datagram Protocol),是無連接的、不可靠的傳輸層協(xié)議。
UDP的頭
源port(16位),目標(biāo)port(16位),總長度(16位),校驗和(16位)
UDP可以發(fā)送多長的報文
根據(jù)MTU的大小來判斷。
MTU是數(shù)據(jù)鏈路層數(shù)據(jù)的最大長度,超出MTU大小的數(shù)據(jù)會被分片。
比如以太網(wǎng)的MTU大小是1500,IP層的頭大小是20字節(jié),UDP頭8字節(jié),那UDP的數(shù)據(jù)長度應(yīng)該是:
1500 -20 -8 = 1472 字節(jié)以下。
windows中可以用ping 命令測試mtu,可以通過-l 指定發(fā)送的數(shù)據(jù)包大小,例如 ping -l 1500 IP地址,
如果提示需要拆分,則MTU比這個值小。
ping 命令基于ICMP協(xié)議,是網(wǎng)絡(luò)層協(xié)議。而MTU 實際上就是網(wǎng)絡(luò)層包的大小。
TCP 和 UDP 的區(qū)別
1.TCP是面向連接的,UDP是無連接的。
TCP需要三次握手建立連接,四次揮手?jǐn)嚅_連接。
UDP沒有這個過程。
2.TCP是字節(jié)流形式,UDP是數(shù)據(jù)報的形式。
字節(jié)流形式的特點:
TCP的應(yīng)用層send幾次和recv幾次是沒有關(guān)系的。有可能send了一次100字節(jié),recv 10次。
也可能send了10次,結(jié)果對端一次recv就全收到了。
這是由于TCP是面向連接的,連接很穩(wěn)定,TCP可以通過流量控制來控制協(xié)議棧中數(shù)據(jù)具體如何發(fā)送。
但是無邊界的字節(jié)流傳輸,也就有沾包的問題,就是本來是兩段數(shù)據(jù),結(jié)果對端是連在一起收到的。
需要考慮沾包的問題。
數(shù)據(jù)報形式的特點:
UDP sendto一次,對端就要recvfrom一次,如果發(fā)送的報文過長,超出了接收端緩沖區(qū)的大小,超出部分將被放棄。
這是由于UDP是無連接的,所以一次就把整個報文發(fā)出去。所以應(yīng)用層需要控制UDP發(fā)送的數(shù)據(jù)大小
3.UDP可以廣播、組播
TCP是面向連接的,所以只能一對一。
UDP無連接,可以一對一發(fā)送,也可以一對多發(fā)送,進行廣播和組播。
4.TCP是可靠的,UDP是不可靠的
TCP通過seq num 和ack num保證數(shù)據(jù)包是有序的、通過重傳機制保證數(shù)據(jù)包不丟失、通過流量控制和擁塞控制確保網(wǎng)絡(luò)傳輸,
所以TCP是可靠的,TCP數(shù)據(jù)報不重復(fù)、不丟失、不亂序。
但是UDP本身沒有這些機制,他只是把報文發(fā)出去,不保證對端能收到。
5.TCP是全雙工可靠通道,UDP是不可靠通道
TCP是全雙工的通信,即連接的雙方可以同時發(fā)送數(shù)據(jù)。
但是TCP是傳輸層協(xié)議,它支持全雙工,其上的應(yīng)用層未必支持全雙工,例如http 1.0 是半雙工,http 2.0是全雙工。
UDP沒有建立穩(wěn)定的連接,所以我認(rèn)為他是不是雙工通信。
6.TCP頭和UDP頭的大小不一樣
TCP的頭大小為 20 - 60 字節(jié)之間,由于TCP頭中有一個選項字段,他的大小是可變的。
UDP的頭大小為固定的8字節(jié)。
7.socket編程流程不同
TCP socket編程,一般 創(chuàng)建socket (SOCK_STREAM)、bind、listen、accept(connect),send / recv, close socket。
UDP socket編程,一般 創(chuàng)建socket (SOCK_DGRAM)、sendto(recvfrom, close socket。//可選bind文章來源:http://www.zghlxwxcb.cn/news/detail-806337.html
UDP的應(yīng)用層協(xié)議
SNMP (port 161、162)
DNS文章來源地址http://www.zghlxwxcb.cn/news/detail-806337.html
IP
到了這里,關(guān)于[TCP] TCP/IP 基礎(chǔ)知識問答的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!