socket通信
Posted kerwincui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket通信相关的知识,希望对你有一定的参考价值。
我们毕竟不是网络工程师,所以我们对于Socket通信,只要大概的了解通信协议就可以了;
=》网络之间传输数据需要协议。所谓协议呢,就是一些的规定,这些规定就是为了减少资源浪费来达成的一个统一的标准。
=》网络七层:应用层、表示层、会话层、传输层、网络层、链路层、物理层;
=》网络五层:应用层、传输层、网络层、链路层、物理层。
=》一般因特网现在都是用的五层协议,把表示层与会话层的功能都交给了具体的应用程序来执行。做为开发人员我们主要要做的就是应用层,也就是应用程序这一层。
=》应用层(Http协议,FTP协议,SMTP协议)报文Message;
=》传输层(TCP协议,UDP协议)报文段Segment,为运行在不同主机上的应用程序进程间提供数据传输服务。通过套接字(Socket)实现;
TCP(传输控制协议):面向连接的、可靠(应用:ftp、smtp、http等都是基于TCP协议的);
UDP(用户数据报协议):无连接的、不可靠的(数据报)的应用,比如视频会议、网络电话、DNS解析。其速度快,能容忍部分数据丢失
=》网络层(IP协议):数据报datagram,把数据从一台主机移动到另一台主机,主机间通信。IP协议不可靠,有丢包;
=》链路层(以太网、WiFi、点对点)帧Frame,负责将数据报传递给下一个节点。不同的链路层有特定的链路层协议。一系列路由器、交换机;
=》物理层:负责把数据从一个字节一个字节的从一个节点移动到下一个节点,该层中的协议仍然与链路层相关。例如,以太网具有许多物理层协议,比如双绞铜线的、同轴电缆的、光线的。(每一层都只考虑自己不关心其他)
端口:是计算机虚拟出来的一个数字,用来区分不同的进程,范围是0-65535之间,主要分为以下三类:
=》公认端口:从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如80端口实际上总是http通讯;
=》注册端口:从1024到49151。它们松散地绑定于一些服务(某些大公司的某些软件,sun公司某个系统的某个服务等)。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如许多系统处理动态端口从1024左右开始;
=》动态或私有端口:从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外,比如Sun的RPC端口从32768开始的。
=》使用netstat -a -n (-a显示所有的端口,-n以数字形式显示)
=》使用Socket通信过程
=》服务器端Server:
1.创建Socket对象;Socket()
2.绑定IP与端口;Bind()
3.监听;Listen()
4.接收,得到一个代理;Accept()
5.通过代理进行通信;Receive或Send
=》客户端Client:
1.创建Socket对象;Socket()
2.连接;Connect()
3.通信;Receive或Send
4.关闭释放;Shutdown或Close
以上是关于socket通信的主要内容,如果未能解决你的问题,请参考以下文章