首页 > 开发 > JAVA > 正文

Java---------网络编程

2016-06-01 19:59:02  来源:慕课网
  OSI模型:是抽象的,接口
TCP/IP模型:是实现类
OSI7层模型:(从下往上)物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
TCP/IP4层模型:(从下往上)物理层,网络层,传输层,应用层
  IP地址:用于唯一识别连接到Internet上的计算机
地址表示方式
IPv4: (32位)点分10进制表示方式,四个整数用点分开,每个十进制数字代表一个8 bits整数,如192.168.123.1
IPv6: (128位)点分16进制表示方式,八个整数用点分开,每个十六进制数字代表一个16bits整数,如CDCD:910A:2222:5498:8475:1111:3900:2020
域名:服务器的地址(名称)
ping www.baidu.com 获取百度的IP地址
sina.com.cn taobao.com DNS-->ARP
DNS:Domain Naming Service Sina.com-->202.100.1.0
ARP:Address Reverse Protocol 202.100.1.0 -->MAC
MAC:计算机物理地址
DNS:域名解析,将域名解析为IP地址
ARP:地址解析协议,将IP地址解析为域名地址
本地IP
127.0.0.1 等同于 localhost
  TCP协议简介
TCP协议是一个有连接、可靠的协议
非常类似与打电话,两端建立长连接,相互传递信息
TCP编程
java.net.Socket
java.net.ServerSocket
  服务器端:
创建ServerSocket对象(并绑定端口)
调用accept方法,等待来自客户端的连接
调用getInputStream/getOutputStream方法,进行I/O
关闭Socket(Socket:套接字 即 IP地址+端口号,表示是一个服务service)
客户端:
创建Socket对象,并连接服务器
调用getInputStream/getOutputStream方法,进行I/O
关闭Socket
  TCP:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、
基于字节流的传输层通信协议。在OSI模型中,它完成第四层传输层所指定的功能,
用户数据报协议(UDP)是同一层内另一个重要的传输协议。
在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,
而是提供不可靠的包交换。
UDP:是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序
的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。
UDP 协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,
UDP传输的可靠性由应用层负责。常用的UDP端口号有:
应用协议 端口号
DNS 53
TFTP 69
SNMP 161
UDP:报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,
在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
  端口范围:0-65535 0-1024 系统端口号
  UDP协议简介
UDP是一个无连接,不可靠的协议。即:数据的发送方只负责将数据发送出去,数据的接受方只负责接收数据。发送方和接收方不会相互确认数据的传输是否成功。
UDP编程:
java.net.DatagramSocket
java.net.DatagramPacket
UDP编程的核心思路
服务器 DatagramSocket socket = new DatagramSocket(9000)
客户端 DatagramSocket socket = new DatagramSocket()
  DatagramPacket
DatagramPacket(byte[] buf, int length) 接收端
DatagramPacket(byte[] buf, int length, SoketAddress,int port) 发送端
getAddress()/getSockAddress()/getPort()/getLength()
setAddress()/setSockAddress()/setPort()/setLength()