TCP和UDP是tcp/ip協議棧中傳輸層放入兩個協議。他們使用IP路由功能,把數據包發送到目的地,從而爲應用程序和應用層協議(HTTP超文本傳輸協議,SNMP網絡管理,TFTP文件傳輸和Telnet遠程登錄)提供網絡服務。
區別;
- TCP是面向連接的,UDP是無連接的傳輸
- TCP有流量控制,阻塞控制,監測數據按時到達,而UDP沒有
- TCP的路由選擇只發生在建立連接的時候,而UDP每次報文都要進行
- TCP是可靠的有超時重發,而UDP沒有
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報文,因此不能一起發送。故需要四步握手。