TCP和UDP的比較

TCP和UDP是tcp/ip協議棧中傳輸層放入兩個協議。他們使用IP路由功能,把數據包發送到目的地,從而爲應用程序和應用層協議(HTTP超文本傳輸協議,SNMP網絡管理,TFTP文件傳輸和Telnet遠程登錄)提供網絡服務。
區別;

  1. TCP是面向連接的,UDP是無連接的傳輸
  2. TCP有流量控制,阻塞控制,監測數據按時到達,而UDP沒有
  3. TCP的路由選擇只發生在建立連接的時候,而UDP每次報文都要進行
  4. TCP是可靠的有超時重發,而UDP沒有
  5. UDP因爲少很多控制信息,所以傳輸慢

    TCP/UDP編程步驟不同
    TCP:
    TCP編程放入服務端一般步驟是:
    1.創建一個Socket,用函數socket();
    2.設置socket屬性,用函數setsocket(); *可選
    3.綁定IP地址,端口等信息到socket上,用函數bind();
    4.開啓監聽,用函數listen();
    5.接收客戶端上來的連接,用函數accept();
    6.收發數據,用函數send()和recv(),或者read()和write();
    7.關閉網絡連接
    8.關閉監聽

    TCP編程的客戶端一般步驟
    1.創建一個socket,用函數socket();
    2.設置socket屬性,用函數setsocket(); *可選
    3.綁定IP地址,端口等信息到socket上。用函數bind(); *可選
    4.設置要連接誒的對方的IP地址和端口屬性
    5.連接服務器,用函數connect()
    6.收發數據,用函數send()和recv(),或者read()和write();
    7.關閉網絡連接

UDP
UDP編程的服務器一般步驟是:
1.創建一個socket,用函數socket();
2.設置socket屬性,用函數setsocket(); *可選
3.綁定IP地址,端口等信息到socket上,用函數bind();
4.循環接收數據,函數recvfrom();
5.關閉網絡連接

UDP的客戶端一般步驟:
1.創建一個socket,用函數socket();
2.設置socket屬性,用函數setsocket(); *可選
3.綁定IP地址,端口等信息到socket上,用函數bind(); *可選
4.設置對方的IP地址和端口屬性;
5.發送數據,函數sendto();
6.關閉連接網絡;

爲什麼連接的時候是三次握手,關閉的時候卻是四次握手?
答:因爲當Server端收到Client端的SYN連接請求報文後,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,”你發的FIN報文我收到了”。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

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