TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議价卤。
- TCP(Transimision Control Protocal)
- 傳輸控制協(xié)議
- 可靠的劝萤、面向連接的協(xié)議
- 傳輸效率低S
- UDP(User Datagram Protocal)
- 用戶數(shù)據(jù)報(bào)協(xié)議
- 不可靠的、無連接的服務(wù)
- 傳輸效率高
網(wǎng)絡(luò)模型
OSI | 功能 | TCP/IP |
---|---|---|
7應(yīng)用層 | 文件傳輸慎璧,電子郵件床嫌,文件服務(wù),虛擬終端 | TFTP胸私,HTTP厌处,SNMP,S7, Modbus, FTP, SMTP岁疼,DNS阔涉,Telnet 等等 |
6表示層 | 數(shù)據(jù)格式化,代碼轉(zhuǎn)換捷绒,數(shù)據(jù)加密 | 沒有協(xié)議 |
5會(huì)話層 | 解除或建立與別的接點(diǎn)的聯(lián)系 | 沒有協(xié)議 |
4傳輸層 | 提供端對端的接口 | TCP瑰排,UDP |
3網(wǎng)絡(luò)層 | 為數(shù)據(jù)包選擇路由 | IP,ICMP暖侨,OSPF椭住,EIGRP,IGMP |
2數(shù)據(jù)鏈路層 | 傳輸有地址的幀以及錯(cuò)誤檢測功能 | SLIP字逗,CSLIP京郑,PPP宅广,MTU |
1物理層 | 以二進(jìn)制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù) | ISO2110,IEEE802傻挂,IEEE802.2 |
- 針對OSI網(wǎng)絡(luò)參考模型乘碑,通常我們TCP/IP就直接可以理解成
TCP/IP | 說明 |
---|---|
應(yīng)用層 | 例如什么S7通訊協(xié)議啊,F(xiàn)TP協(xié)議金拒,Modbus通訊等等均是應(yīng)用層的一種協(xié)議兽肤,其實(shí)還是基于TCP傳輸層 |
TCP層也稱傳輸層 | 發(fā)包 |
網(wǎng)絡(luò)層(IP) | 網(wǎng)絡(luò)互通嘛,沒什么好解釋的 |
網(wǎng)絡(luò)接口層 | 例如什么以太網(wǎng)啊绪抛,RS232/485的一些串口啊 |
以上是一些基礎(chǔ)的協(xié)議资铡,下面找一個(gè)TCP的報(bào)頭的圖片
解釋:源端口號和目標(biāo)端口號各占16個(gè)位
順序號有的叫序列號:占32位
確認(rèn)號:
占32位
頭部長度6位,保留6位
URG:報(bào)文段緊急幢码。
ACK:確認(rèn)序號有效笤休。
PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文段交給應(yīng)用層。
RST:重建連接症副。
SYN:發(fā)起一個(gè)連接店雅。在握手完成后SYN為1,表示TCP建立已連接贞铣。此后的所有報(bào)文段中闹啦,- SYN都被置0。
FIN:釋放一個(gè)連接辕坝。如果源主機(jī)數(shù)據(jù)發(fā)送完畢窍奋,將把該連接下要發(fā)送的最后一個(gè)報(bào)文段的報(bào)- 頭中的FIN位置1,或?qū)⒃搱?bào)文段后面發(fā)送的報(bào)頭中該位置1酱畅。
窗口6位
校驗(yàn)和16位琳袄,緊急指針16位
可選項(xiàng)8的倍數(shù) 位
數(shù)據(jù)由此不難看出TCP至少是20個(gè)字節(jié)
那么具體是怎么三次握手的呢,先找一張圖片纺酸,自己就不畫了窖逗,網(wǎng)上一搜一大堆
- 解釋
- 客戶端向服務(wù)端發(fā)起請求SYN,和順序號seq狀態(tài)改為SYN_SEND
- 服務(wù)端收到后吁峻,確認(rèn)收到ACK信號即客戶端序列號+1滑负,發(fā)送SYN請求,服務(wù)端順序號發(fā)給服務(wù)端,同時(shí)狀態(tài)更改為SYN_RECV
- 客戶端收到后返回服務(wù)端確認(rèn)信號即ACK即服務(wù)端序列號+1用含,另外將置后的順序號發(fā)給服務(wù)端,狀態(tài)進(jìn)入Established
四次揮手
就是將服務(wù)端給哭護(hù)短發(fā)送請求時(shí)拆分為了兩次,大家可以網(wǎng)上找更詳細(xì)的圖片解析
客戶端向服務(wù)端發(fā)送 FIN (完成信號)信號+ ACK(確認(rèn)信號) 報(bào)文矮慕,序號為 X。 客戶端進(jìn)入 FIN-WAIT1第一次等待
服務(wù)器端回復(fù) ACK 報(bào)文啄骇。附帶序號Z和確認(rèn)序號X+1痴鳄,表示服務(wù)器已經(jīng)接受到了客服端的報(bào)文。但是由于服務(wù)器可能還在處理事務(wù)缸夹,因此痪寻,報(bào)文并不會(huì)攜帶FIN標(biāo)志螺句。狀態(tài):CLOSE WAIT(服務(wù)端處理事件等待)
在一段時(shí)間之后,服務(wù)器已經(jīng)處理完畢橡类,發(fā)送帶有 FIN和ACK的報(bào)文蛇尚,序號為Y,圖中未標(biāo)出確認(rèn)序號為 X + 1 顾画。 狀態(tài): ACK-LAST
客戶端發(fā)送ACK報(bào)文取劫,序號為 X+1,確認(rèn)號Y+1 研侣。 客戶端進(jìn)入: TIME_WAIT谱邪。服務(wù)端進(jìn)圖CLOSE(初始狀態(tài))
提一嘴S7通訊,可以自己抓包,很清晰的看到三四握手發(fā)的包內(nèi)容以及S7的協(xié)議結(jié)構(gòu)
至于與PLC的通訊其實(shí)都更改應(yīng)用層的協(xié)議,傳輸過程都時(shí)一層報(bào)文一層報(bào)文的累加最后成了一個(gè)固定的協(xié)議庶诡,例如西門子S7協(xié)議惦银,是按照OSI模型的形式拼接的報(bào)文
S7+CTP+YPKT+TCP/IP(具體可以去抓包,可以一目了然)
[太晚了...先這樣,明天早起上班,回頭再補(bǔ)充]