一、作用
二、概念
1.计算机网络5层结构
(1)物理层
负责0、1比特流与物理设备电压高低、光的闪灭之间的转换
(2)数据链路层
- 在节点间传输的是帧
- 用 MAC 地址来标志节点
(3)网络层
网络层中用 IP 地址来标志节点。
IP 协议
- 不可靠
未提供一种数据未到达时的处理机制,这被认为是上层协议 TCP/UDP 应该做的事。
ARP(Address Resolution Protocal) 及 RARP 协议
当主机要发送一个IP包的时候,会首先查一下自己的 ARP高速缓存(就是一个IP-MAC地址对应表缓存)。
如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址。如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。
发送广播的主机就会用新的 ARP 缓存数据准备好数据链路层的数据发送工作。
ICMP 协议
IP 协议是不可靠的,那么保证数据可靠传输的工作就应该由其他模块来完成,ICMP 就是其中一个重要模块。当 IP 数据包传输错误时,ICMP 会将错误信息封包,然后回传回主机,给主机一个处理错误的机会。
(4)传输层
- DNS(Domain Name System)协议
是因特网上作为域名和 IP 地址相互映射的分布式数据库。该协议运行在 DNS 协议之上,使用 53 端口。
(5)应用层
2.端口号
端口号的目的是确认对方主机的哪个进程在和自己交互。端口号规定16位,即一个主机有2的16次方65536个端口号。
-
[0,1023]
分配给系统的端口,我们不可乱用 -
[1024,49151]
登记端口,必须在 IANA 按规定手续登记后才可使用 -
[49152,65535]
短暂端口号,给进程暂时使用,一个进程使用完后其他进程可继续使用
在Socket使用时,可以用1024~65535的端口号
3. TCP 协议
4. socket 介绍
5. socket VS Http
-
http
请求-响应,主动方是客户端,建立网络连接后,当客户端主动向服务器发送请求后,服务器才能向客户端返回数据。 -
socket
建立网络连接后,主动方可以是服务端,服务器可主动向客户端发送数据,不需客户端发送请求
6. 长连接 VS 短连接
长连接:客户端和服务器之间始终建立一个通信连接,在连接没有中断前,客户端和服务器之间随时可进行通信。
短连接:通信双方有数据交互时就建立一个连接,数据发送完,就断开此连接。
-
Http 长连接 VS 短连接
-
TCP 长连接 VS 短连接
-
socket 长连接 VS 短连接
三、使用
1.客户端
下文代码摘自Android Socket使用详解
(1)建立连接
// 创建Socket对象 & 指定服务端的IP及端口号
Socket socket = new Socket("192.168.1.32", 1989);
(2)客户端接收服务器发送的消息
得到输入流
InputStream in=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(in);
BufferedReader br=new BufferedReader(isr);
(3)客户端向服务器发送消息
得到输出流
OutputStram out=socket.getOutputStream();
out.write("hello"+"\n").getByte("utf-8");
(4)断开和服务器的连接
网友评论