網絡編程TCP和UDP相關


TCP服務:可靠的 面向連接的流式服務  進行一對一的連接比較方便

必須先建立連接 ,在發送數據  依靠三次握手建立連接

利用滑動窗口進行流量的控制

採用發送應答機制,發送端發送每個TCP數據報服務必須收到接收端的應答,才認爲此數據報發送成功
TCP報文最終以IP數據報發送,IP數據報到達接收端有可能亂序,重複,所以TCP協議對接收到的IP報文重排,整理,再交付應用層。
TCP協議使用超時重傳、數確認等方式確保數據被正確的發送至目的端    TCP服務時可靠的
TCP和UDP可以同時使用一個端口
TCP服務是基於流式套接字的,基於流的套接字沒有數據長度的限制,源源不斷的從通信的一端流入另外一端,發送端可以逐個字節的向數據流中寫入數據,接收端也可以逐個字節的將他們讀出
 

TIME_WAIT狀態存在的原因有兩點:

可靠的終止TCP連接

保證讓遲來的TCP報文有足夠的時間被識別並丟棄


UDP服務:
不可靠  無連接和基於數據報的UDP服務    可以進行一對多的連接   
不可靠表示UDP協議無法保證數據從發送端到正確的傳輸到目的段端 
對於數據只進行一次讀取,若一次沒讀完 ,下次不進行讀取,進行下一個數據的讀取(每個UDP數據報都有一個長度,接收端必須以該長度的最小單位將其所有內容進行一次性的讀取,否則數據將被截斷

 

先建立連接   才能收發數據
connect()   發起連接(開始三次握手)
依靠三次握手建立連接
listen() 創建監聽隊列
Linux-> 已完成三次握手隊列的大小


TCP與DUP的傳包區別:一個不封裝(TCP)一個封裝(UDP)
TCP報文段和UDP數據報通過其頭部的16位端口號字段來區分上層應用程序,DNS協議對應的端口號是53,HTTP 協議對應的端口號是80

粘包的解決方式: 
加標記     將字符分隔開,便於辨認
send   recv 交替執行       將粘包分隔開 ,不用解析  

 

發送端判斷擁塞的依據有如下兩個:

傳輸超時,或者說TCP重傳定時器溢出

接收到重複的確認報文段

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章