UDP與TCP
TCP: 一種面向連線的, 可靠的基於位元組流的傳輸層協議
特點: 點對點通訊, 可靠性高, 但是佔用系統資源多, 效率低
UDP: 一種無連線的傳輸層協議, 面向事務的簡單不可靠資訊傳遞服務
特點: 傳輸不可靠, 可能丟失, 但是可以廣播傳送, 且開銷小
TCP的傳送端在將報文傳送給接收端時, 接收端需要傳送確認包給傳送端, 如果傳送端沒有接收到確認包, 或者接收端根本就沒有接收到報文, 則傳送端會超時重發一個新的報文給接收端
雖然UDP開銷小, 但使用UDP並不是為了提高吞吐量, 而是為了解決延遲問題, 同時短連線可以降低嵌入式終端的能耗, 對於伺服器也可以減少資源的使用
TCP三次握手, 四次揮手
三次握手: client請求建立連線傳送一個報文, 標誌位SYN=1, 代表建立連線, 同時生成隨機序列號seq(32位序列號)
server傳送一個確認訊息包, 標誌位SYN=1, 生成一個seq, 同時標誌位ACK=1, 代表確認建立連線, 同時序列號ack=seq+1(client生成的seq), 此時client已經可以沒有問題, 傳送的資訊server可以收到, 也可以收到server發過來的資訊, 但server還不知道client是否可以接收到自己傳送的資訊
於是需要第三次握手, 此時client傳送一個報文ACK=1, 序列號ack=seq+1(server生成的seq)
四次揮手: client斷開連線, 傳送一個報文, 標誌物FIN=1, 代表斷開連線, 傳送seq(根據之前傳送的報文慢慢增長)
server收到後, 也傳送一個報文, ACK=1, ack=seq+1, 確認斷開連線, 此時client已經斷開連線, 但是server可能還未準備好斷開連線可能需要client等一會才會斷開
當server準備好斷開連線, 也需要重複上述兩次揮手
相關文章
- TCP與UDPTCPUDP
- MQTT是TCP還是UDP?TCP與UDP區別MQQTTCPUDP
- UDP與TCP的區別UDPTCP
- TCP與UDP的區別TCPUDP
- HTTP與UDP/TCP區別HTTPUDPTCP
- TCP與UDP區別詳解TCPUDP
- TCP 和 UDPTCPUDP
- TCP和UDPTCPUDP
- TCP vs UDPTCPUDP
- 網路程式設計中TCP與UDP程式設計TCPUDP
- 使用Spring Integration接收TCP與UDP請求SpringTCPUDP
- DNS何時使用TCP與UDP協議?DNSTCPUDP協議
- UDP分片和丟包與TCP效果對比UDPTCP
- 一文搞懂TCP與UDP的區別TCPUDP
- TCP和UDP比較TCPUDP
- TCP和UDP協議TCPUDP協議
- UDP和TCP以及HTTPUDPTCPHTTP
- TCP和UDP對比TCPUDP
- .NET TCP、UDP、Socket、WebSocketTCPUDPWeb
- UDP和TCP的差異UDPTCP
- tcp和udp的區別TCPUDP
- TCP/UDP對比總結TCPUDP
- TCP會被UDP取代麼?TCPUDP
- TCP/IP、UDP/IP協議TCPUDP協議
- Python 關於TCP簡介以及與UDP的區別PythonTCPUDP
- python 中的UDP和TCP(1)PythonUDPTCP
- 【網路程式設計】Tcp/Udp程式設計TCPUDP
- http tcp udp json 接收測試HTTPTCPUDPJSON
- day30:TCP&UDP:socketTCPUDP
- 系列TCP/IP協議-UDP(009)TCP協議UDP
- TCP和UDP是如何工作的TCPUDP
- TCP 和 UDP 協議簡介TCPUDP協議
- 《Linux網路開發必學教程》7_TCP 與 UDPLinuxTCPUDP
- 【測試】echo傳送和接收TCP/UDP資料包|shell 傳送TCP/UDP資料包TCPUDP
- 【bash】關於 /dev/(tcp|udp)/${HOST}/${PORT}devTCPUDP
- 傳輸層協議 TCP 和 UDP協議TCPUDP
- Node TCP /UDP 簡易聊天室TCPUDP
- php中TCP和UDP的區別PHPTCPUDP