一、TCP協議
TCP是面向連接的、可靠的進程到進程通信的協議
TCP提供全雙工服務,即數據可在同一時間雙向傳輸
二、TCP報文段
TCP將若干個字節構成一個分組,叫報文段(Segment)
TCP報文段封裝在IP數據報中
TCP報文段
序號:發送端爲每個字節進行編號,便於接收端正確重組
確認號:用於確認發送端的信
ACK:確認序號位,當該位爲1時,用於確認發送方的數據
FIN:當TCP斷開連接時將該位置爲1
SYN:同步序號位,TCP需要建立連接時將該值設爲1
窗口大小:用於說明本地可接收數據段的數目,窗口大小是可變的
三、TCP連接
TCP建立連接的過程稱爲三次握手
通過wireshark抓包來分析三次握手的過程
第一次握手
第二次握手
TCP三次握手
TCP斷開連接的四次揮手
第一次揮手
第二次揮手
第三次揮手
第四次揮手
四、常用的TCP端口號及其功能
端口 協議 說 明
21 FTP FTP服務器所開放的控制端口
23 TELNET 用於遠程登錄,可以遠程控制管理目標計算機
25 SMTP SMTP服務器開放的端口,用於發送郵件
80 HTTP 超文本傳輸協議
110 POP3 用於郵件的接收
五、附註
關於三次握手與四次揮手通常都會有典型的面試題,在此提出供有需求的XDJM們參考:
(1)三次握手是什麼或者流程?四次握手呢?答案前面分析就是。
(2)爲什麼建立連接是三次握手,而關閉連接卻是四次揮手呢?
這是因爲服務端在LISTEN狀態下,收到建立連接請求的SYN報文後,把ACK和SYN放在一個報文裏發送給客戶端。而關閉連接時,當收到對方的FIN報文時,僅僅表示對方不再發送數據了但是還能接收數據,己方也未必全部數據都發送給對方了,所以己方可以立即close,也可以發送一些數據給對方後,再發送FIN報文給對方來表示同意現在關閉連接,因此,己方ACK和FIN一般都會分開發送。