前期:
OSI网络模型:(7层)
物理层:为数据链路层提供设备支持(网口)
数据链路层:网络层的数据
网络层:网络连接功能、路由器的分配
传输层:网络数据之间的传输
会话层:两台设备之间进行一次会话(一次网络请求)
表示层:数据传输的格式或者其他功能
应用层:用户操作(网络地址)
后期:
TCP/IP:(4层)
网络层:
网络互联层:
传输层:
应用层:
java中的网络通讯:
实现网络通讯的基础:
1、IP地址(电脑设备或者其他设备)
在网络世界中,每一台电脑都有对应的IP地址(唯一标识)
查看:Win键 + r 输入cmd 输入ipconfig
本机默认地址(本地回环地址):127.0.0.1(通过这个地址可以实现一台电脑的自我访问)
默认的主机名:localhost
2、端口号(应用程序在电脑中的地址)
范围:0 ~ 65535 其中:0~1024一般用于描述电脑系统应用
3、网络协议(TCP UDP HTTP)
数据传输协议:规定某种数据格式
InetAddress类:
注意:因为InewAddress的构造方法的修饰符是默认的,所以不能通过构造方法new对象
获取本地的InewAddress对象:
InewAddress.getLocalHost();
获取本机IP地址的InetAddress类:
InetAddress.getLocalHost()
获取指定IP地址的InetAddress类:
InetAddress.getByName("192.168.1.120")
接收端获得发送消息来的IP地址:
String ip = packet.getAddress().getHostAddress();
接收端获得消息内容:
byte[] data = packet.getData();
Java网络协议:实际上就是一种数据协议
1、TCP(打电话):
需要双方建立连接,需要3次握手,可靠的协议
2、UDP(送快递):
不需要建立连接,是不可靠协议
3、HTTP:
无状态协议
Socket:套接字
帮助我们完成数据的传递,底层已经封装好了IO流操作,数据传递:流
UDP代码流程:
接收端:
1、定义socket对象
2、定义byte数组用于接收数据
3、定义DatagramSocket接收整个包
4、接收
5、解析数据
6、关闭socket
发送端:
1、建立socket
2、确定数据
3、确定IP地址以及端口号
4、发送
5、关闭socket
TCP代码流程:必须是在双方建立连接的情况下进行通讯
接收器:
1、创建ServerSocket对象
2、等待客户端连接
3、获取流
4、操作流获取数据
发送端:
1、创建socket对象
2、确定数据
3、获取流
HTTP协议:
请求:相当于一次网络访问
请求行:GET /S HTTP/1.1
方法 路径 HTTP协议版本
请求头(消息报文):
接收的文本类型:Accept: text/html
text/html:mime类型(大类型/小类型)
接收的语言类型:Accept-Language zh-CN(中文)
浏览器内核:User-Agent:
支持的压缩文件类型:Accept-Encoding:
防盗链(当前网页来自哪个网址):Referer
请求体(请求正文):
响应:服务器向客户端
响应行:
HTTP/1.1 200 OK(CRLF)
状态码:
200:成功
404:找不到该网页
503:服务器出错
响应头:
文本类型:Content-Type:text/html; charset = utf-8
响应体:返回当前网页的源码
HTTP代码流程
1、确定目标网址 URL
URL url = new URL("http://img0.imgtn.bdimg.com/it/u=1352823040,1166166164&fm=214&gp=0.jpg");
2、打开网络连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
3、获取流
InputStream in = connection.getInputStream();
4、操作流获取数据
来源:CSDN
作者:事了
链接:https://blog.csdn.net/yinhao7700/article/details/79620602