摘自https://www.cnblogs.com/whgk/p/6118206.html
通過(guò)mac地址可以找到對(duì)應(yīng)的主機(jī),怎么找到主機(jī)應(yīng)用進(jìn)程呢,
有一個(gè)東西來(lái)標(biāo)識(shí)他,---端口
端口
占有16位,主機(jī)間的通訊,也就是應(yīng)用進(jìn)程間的通訊,都要依靠端口,一個(gè)進(jìn)程對(duì)應(yīng)一個(gè)端口,
熟知端口:0--1023,一些固定的端口
登記端口:1024--49151, 系統(tǒng)引用
客戶(hù)端端口:49152--65535, 客戶(hù)端應(yīng)用
UDP 協(xié)議
User Datagram Protocol 用戶(hù)數(shù)據(jù)報(bào)協(xié)議
無(wú)連接,不可靠
無(wú)連接:通訊前不需要建立連接,直接傳輸數(shù)據(jù)
不可靠:沒(méi)有確認(rèn)機(jī)制,沒(méi)有超時(shí)和重傳功能,如果丟失,會(huì)發(fā)送一個(gè)ICMP差錯(cuò)報(bào)文給源主機(jī)
UDP 首部
源端口號(hào): 占16位,源主機(jī)的應(yīng)用進(jìn)程所使用的端口號(hào)
目標(biāo)端口號(hào):占16位
UDP報(bào)長(zhǎng)度
檢驗(yàn)號(hào):
UDP偽首部
使用UDP協(xié)議的例子
1.DNS,就是根據(jù)域名解析ip地址的一個(gè)協(xié)議,他使用的就是UDP
2,DHCP,這個(gè)是給各電腦分配IP地址的協(xié)議,其中用的也是UDP協(xié)議
3,IGMP,我們說(shuō)的多播,也就是使用的UDP,
TCP協(xié)議
面向連接的: 確認(rèn)機(jī)制使雙方確認(rèn)互連
可靠傳輸:確認(rèn)機(jī)制,失效則重發(fā)
有流量控制:客戶(hù)端緩存過(guò)大時(shí),服務(wù)端發(fā)送窗口減小
堵塞控制: 網(wǎng)絡(luò)擁塞時(shí),服務(wù)端發(fā)送窗口減小,
面向字節(jié)流傳輸
TCP報(bào)文結(jié)構(gòu)
源端口號(hào)
目標(biāo)端口號(hào)
序列號(hào): 所傳分組數(shù)據(jù)的位置
確認(rèn)應(yīng)答:
首部長(zhǎng)度
保留
控制位:
URG:緊急,傳送到目標(biāo)主機(jī)不用排隊(duì)
ACK:確認(rèn),當(dāng)=1為確認(rèn)=0為無(wú)效
PSH:推送.=1 減少數(shù)據(jù)向上交付
RST:復(fù)位.報(bào)文嚴(yán)重錯(cuò)誤,會(huì)RST=1,然后釋放連接
SYN:同步,在進(jìn)行連接的時(shí)候,就三次握手用的到
FIN:終止,在釋放連接時(shí)
窗口:用來(lái)控制對(duì)方發(fā)送的數(shù)據(jù)量
檢驗(yàn)和:檢驗(yàn)首部和數(shù)據(jù)這兩部分
選項(xiàng):長(zhǎng)度可變
填充:就是為了讓其成為整數(shù)個(gè)字節(jié)
可靠傳
數(shù)據(jù)編號(hào)::將每個(gè)字節(jié)進(jìn)行編號(hào)
累積確認(rèn):服務(wù)器端收到一個(gè)字節(jié)就發(fā)一個(gè)確認(rèn),那樣效率太低,而是當(dāng)收到4,5個(gè)時(shí)在發(fā)送一個(gè)確認(rèn)
滑動(dòng)窗口:
超時(shí)重傳時(shí)間:
快速重傳:
流量控制
在傳輸層中,有接收緩存和發(fā)送緩存,每次發(fā)送數(shù)據(jù)會(huì)攜帶,如果對(duì)象緩存快滿(mǎn),會(huì)告訴自己,少發(fā)點(diǎn)數(shù)據(jù),讓對(duì)方有緩沖的機(jī)會(huì),不會(huì)導(dǎo)致緩存溢出,不讓自己的報(bào)文被丟棄
擁塞控制
當(dāng)檢測(cè)到網(wǎng)絡(luò)擁塞,
釋放連接四次揮手
第一次揮手:從ESTABLISHED變?yōu)橹鲃?dòng)關(guān)閉狀態(tài),客戶(hù)端主動(dòng)發(fā)送釋放連接騎牛給服務(wù)端,FIN=1,發(fā)送完后變?yōu)镕IN_WAIT_1狀態(tài)
第二次揮手:服務(wù)器收到釋放鏈接狀態(tài)后,狀態(tài)變?yōu)镃LOSE_WAIT,然后發(fā)送確認(rèn)報(bào)文給客戶(hù)端,客戶(hù)端收到確認(rèn)后進(jìn)入FIN_WAIT_2狀態(tài),
第三次揮手:服務(wù)器端所有數(shù)據(jù)發(fā)送完,向客戶(hù)端發(fā)送釋放連接報(bào)文,自己進(jìn)入LAST_WAIT狀態(tài),也就是等待客戶(hù)端確認(rèn)狀態(tài)
第四次揮手:客戶(hù)端收到釋放連接報(bào)文后發(fā)送確認(rèn)報(bào)文,自己變?yōu)門(mén)IME_WAIT,服務(wù)端收到確認(rèn)報(bào)文,進(jìn)入CLOSE狀態(tài),客戶(hù)端稍后進(jìn)入CLOSE狀態(tài)