最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

上位機面試必備——TCP通信靈魂二十問【上】

2020-06-22 15:59 作者:新閣教育  | 我要投稿


關注公眾號獲取干貨資料
關注公眾號,獲取更多干貨


請回復關鍵詞【MQTT通信源碼】獲??!零基礎學習GDI+控件開發(fā)?】限時搶購0.1元,報名后隨時學習哦~

戳→_→https://ke.qq.com/course/1709767?ydyd&tuin=a6f76b91

TCP通信協(xié)議應該是上位機開發(fā)中應用最廣泛的協(xié)議,無論是西門子S7協(xié)議、三菱MC協(xié)議或者是歐姆龍的Fins-TCP協(xié)議等,都是TCP通信協(xié)議的典型應用。很多人在上位機面試時,都會被問到關于TCP通信的一些問題,比如三次握手和四次揮手、TCP與Socket之間的聯(lián)系等,為了便于大家更好地理解TCP通信,我整理了一套關于TCP通信的20個常見的面試題:

01、OSI參考模型與TCP/IP參考模型

如上圖所示,OSI參考模型為7層模型,依次為應用層、表示層、會話層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層及物理層,TCP/IP模型是在OSI參考模型的基礎上做了一定的精簡,形成一個4層模型。在層次關系上,兩者都采用了分層體系結構,都是對等的層間通信,不同之處在于TCP/IP參考模型比OSI參考模型層次更清晰簡練,在功能上,兩者差別不大,都是為了實現(xiàn)兩個或多個終端之間的通信。

02、TCP通信位于網(wǎng)絡模型的哪一層?

TCP(Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,無論是OSI參考模型,還是TCP/IP參考模型,TCP都位于傳輸層,TCP是為了在不可靠的互聯(lián)網(wǎng)絡上提供可靠的端到端字節(jié)流而專門設計的一個傳輸協(xié)議。

03、如何理解面向連接、可靠、字節(jié)流?

面向連接:意味著TCP是點對點之間的通信,不能像UDP那樣可以一個主機同時向多個主機發(fā)送消息,也就是無法實現(xiàn)一對多的情形。

可靠的:無論網(wǎng)絡鏈路如何變化,TCP都可以保障報文能夠到達接收端。

字節(jié)流:基于字節(jié)流,意味著無論我們消息有多大都可以進行傳輸。并且消息是有序的,當前一個消息沒有收到的時候,即使它先收到了后面的字節(jié)已經(jīng)收到,那么也不能扔給應用層去處理,同時對重復的報文會自動丟棄。

04、為什么需要TCP協(xié)議?

因為IP層是不可靠的,它不保證網(wǎng)絡包的一定交付、不保證按序交付、也不保證完整交付。因此如果需要保證網(wǎng)絡數(shù)據(jù)包的可靠性,就必須要通過上層即傳輸層的TCP協(xié)議來保證。

05、TCP與UDP之間區(qū)別及聯(lián)系?

TCP與UDP都屬于傳輸層協(xié)議,區(qū)別如下:

  • 連接機制

TCP 是面向連接的傳輸層協(xié)議

UDP 是不需要連接

  • 服務對象

TCP 是一對一的兩點服務

UDP 支持一對一、一對多、多對多

  • 可靠性

TCP 保證數(shù)據(jù)不丟失、不重復、按需到達

UDP 是盡最大努力交付,不保證交付數(shù)據(jù)

  • 擁塞控制、流量控制

TCP 有擁塞控制和流量控制機制

UDP 則沒有擁塞控制和流量控制機制


06、TCP首部報文分析

TCP的首部至少占用20個字節(jié),包含的內容有源端口號、目標端口號、序列號、應答號、控制位、校驗和等,具體如下所示:

07、簡要說明TCP三次握手

  • 服務器與客戶端均處于CLOSE狀態(tài)

  • 服務器先主動監(jiān)聽某端口,處理LISTEN狀態(tài)

  • 客戶端發(fā)送SYN報文,seq=x,SYN=1

  • 服務器回復SYN+ACK報文,seq=y,ack=x+1,SYN=1,ACK=1

  • 客戶端回復ACK報文,ack=y+1,ACK=1

08、簡要說明TCP四次揮手

  • 服務器與客戶端均處于ESTABLISHED狀態(tài)

  • 客戶端打算關閉連接,發(fā)送一個 FIN 報文,進入 FIN_WAIT_1 狀態(tài)。

  • 服務端回復 ACK報文,進入 CLOSED_WAIT 狀態(tài)。

  • 客戶端收到 ACK 應答報文后,進入 FIN_WAIT_2 狀態(tài)。

  • 服務端處理完數(shù)據(jù)后,向客戶端發(fā)送 FIN 報文,進入 LAST_ACK 狀態(tài)。

  • 客戶端回復一個 ACK 應答報文,之后進入 TIME_WAIT 狀態(tài)

  • 服務器收到 ACK 應答報文后,進入了 CLOSE 狀態(tài),服務端完成連接的關閉。

  • 客戶端在經(jīng)過 2MSL 一段時間后,自動進入 CLOSE 狀態(tài),客戶端也完成連接的關閉。

09、TCP握手為什么剛好是三次?

TCP 建立連接時,通過三次握手能防止歷史連接的建立,能減少雙方不必要的資源開銷,能幫助雙方同步初始化序列號。序列號能夠保證數(shù)據(jù)包不重復、不丟棄和按序傳輸。

不使用「兩次握手」和「四次握手」的原因:

兩次握手:無法防止歷史連接的建立,會造成雙方資源的浪費,也無法可靠的同步雙方序列號;

????? ?四次握手:三次握手就已經(jīng)理論上最少可靠連接建立,所以不需要使用更多的通信次數(shù)。

10、TCP揮手為什么需要四次?

回顧下四次揮手雙方發(fā) FIN 包的過程,就能理解為什么揮手需要四次:

  • 關閉連接時,客戶端向服務端發(fā)送 FIN 時,僅僅表示客戶端不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù)。

  • 服務器收到客戶端的 FIN 報文時,先回一個 ACK 應答報文,而服務端可能還有數(shù)據(jù)需要處理和發(fā)送,等服務端不再發(fā)送數(shù)據(jù)時,才發(fā)送 FIN 報文給客戶端來表示同意現(xiàn)在關閉連接。

由于服務端通常需要等待完成數(shù)據(jù)的發(fā)送和處理,所以服務端的 ACK 和 FIN 一般都會分開發(fā)送,從而比三次握手導致多了一次。

更多精彩內容:

(點擊即可閱讀)

上位機C#通過OPCUA和西門子PLC通信

上位機開發(fā)之三菱FX3U以太網(wǎng)通信實踐

基于C#實現(xiàn)本地數(shù)據(jù)上傳至云服務器

上位機開發(fā)之三菱Q系列PLC通信實踐

基于S7-PLCSIM Advanced搭建S7通信仿真環(huán)境


上位機面試必備——TCP通信靈魂二十問【上】的評論 (共 條)

分享到微博請遵守國家法律
淮北市| 高陵县| 视频| 米泉市| 昌吉市| 平阴县| 大方县| 秭归县| 甘肃省| 仁怀市| 临沭县| 青阳县| 石台县| 涟水县| 丰城市| 棋牌| 扎囊县| 家居| 万全县| 东方市| 桃园市| 左权县| 西昌市| 辽宁省| 昂仁县| 长海县| 定日县| 稷山县| 巢湖市| 弥勒县| 明星| 远安县| 甘德县| 平武县| 定南县| 永城市| 固始县| 亳州市| 梁河县| 沙田区| 同德县|