#頭号周刊#【看圖學網絡】計算機網絡協議知識點歸納總結拓撲圖讓學習變簡單
計算機網絡協議拓撲圖知識歸納總結:
一、OSI七層協議
每層運行常見設備:
Tcp和UDP的區别和優缺點
1、TCP與UDP區别總結:
1、 TCP面向連接 (如打電話要先撥号建立連接); UDP是無連接 ,即發送數據之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丢失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
Tcp通過校驗和,重傳控制,序号标識,滑動窗口、确認應答實現可靠傳輸。如丢包時的重複控制,還可以對次序亂掉的分包進行順序控制。
3、UDP具有較好的實時性,工作效率比TCP高,适用于對高速傳輸和實時性有較高的通信或廣播通信。
4.每一條TCP連接隻能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP對系統資源要求較多,UDP對系統資源要求較少。
2、為什麼UDP有時比TCP更有優勢?
UDP以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP,如實時遊戲。
(1)網速的提升給UDP的穩定性提供可靠網絡保障,丢包率很低,如果使用應用層重傳,能夠确保傳輸的可靠性。
(2)TCP為了實現網絡通信的可靠性,使用了複雜的擁塞控制算法,建立了繁瑣的握手過程,由于TCP内置的系統協議棧中,極難對其進行改進。
采用TCP,一旦發生丢包,TCP會将後續的包緩存起來,等前面的包重傳并接收到後再繼續發送,延時會越來越大,基于UDP對實時性要求較為嚴格的情況下,采用自定義重傳機制,能夠把丢包産生的延遲降到最低,盡量減少網絡問題對遊戲性造成影響。
3、UDP和TCP編程步驟也有些不同,如下:
TCP:
TCP編程的客戶端一般步驟是:
1、創建一個socket,用函數socket();
2、設置Socket屬性,用函數setsockopt();* 可選
3、綁定IP地址、端口等信息到socket上,用函數bind();* 可選
4、設置要連接的對方的IP地址和端口等屬性;
5、連接服務器,用函數connect();
6、收發數據,用函數send()和recv(),或者read()和write();
7、關閉網絡連接;
int send(
_In_ SOCKET s, //向哪個socket發送,accept返回的socket。
_In_ const char *buf,
_In_ int len,
_In_ int flags
); 由于
send(SocketClient,(const char *)&fh,sizeof(fh),0);
recv(SocketClient,szbuf,sizeof(szbuf),0);
UDP:與之對應的UDP編程步驟要簡單許多,分别如下:
UDP編程的客戶端一般步驟是:
1、創建一個socket,用函數socket();
2、設置socket屬性,用函數setsockopt();* 可選
3、綁定IP地址、端口等信息到socket上,用函數bind();* 可選
4、設置對方的IP地址和端口等屬性;
5、發送數據,用函數sendto();
6、關閉網絡連接;
int recvfrom(
_In_ SOCKET s, //綁定的socket
_Out_ char *buf,
_In_ int len,
_In_ int flags,
_Out_ struct sockaddr *from, //用來接收對方的
_Inout_opt_ int *fromlen
);
int nres= recvfrom (pThis->m_socketListen,szBuf,sizeof(szBuf),0,(sockaddr*)&addrClient,&nSize);//0處标志位
sendto(m_socketListen,szBuffer,nSize,0,(const sockaddr*)&addr,sizeof(sockaddr_in))
TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細節控制交給應用的通信傳輸。
4、将socket設置為廣播屬性
bool optval=true;
setsockopt(m_socketListen,SOL_SOCKET,SO_BROADCAST,(const char *)&optval,sizeof(bool));
5、将Socket設置為非阻塞。
//bool benable=true;
//ioctlsocket(m_socketListen,FIONBIO,(u_long*)&benable);
計算機網絡協議拓撲圖知識點歸納總結:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!