学而实习之 不亦乐乎

C# Socket和TCP连接的区别

2020-08-09 15:34:35

一、OSI参考模型简单介绍

网络通信七层参考模型介绍:
物理层: HUB,网线
链路层: MAC,ARP,交换机
网络层:IP,ICMP,IGMP,路由器
传输层: TCP,UDP
会话层: HTTP,SMTP,FTP,POP3
表示层: SOAP,SSL
应用层:HTTP,POP3等

二、TCP和Socket的区别:

1.所处网络层不同(参考一中的简介)

Socket是对网络层操作。
TcpClient是对传输层的操作。

如,访问HTTP服务:
使用Socket,需要
网络层 --> 传输层 --> 会话层

使用TcpClient
传输层 --> 会话层

2.本质区别

网络层的协议是IP,传输层的协议是TCP。最本质的区别就是,网络层把数据添加到IP地址,IP为所有的系统端口服务,传输层只添加到端口,即操作系统的服务端口。网络层/输出层提供了面向连接和无连接的服务方式。

三、总结

C#中TcpClient和Socket的应用选择:
只考虑:主机,端口,数据传输时,用TcpClient或UdpClient;
要考虑:IP封包,路由,IP数据包时,用Socket;