1、网络通讯协议
2、域名解析
域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器(DNS)
负责将域名转化成IP地址,这样才能和主机建立连接
//获取InetAddress对象所含的域名
InetAddress inetAddress = InetAddress.getByName("channel.17doubao.com");
System.out.println(inetAddress);
//获取InetAddress对象所含的ip
String hostAddress = inetAddress.getHostAddress();
System.out.println(hostAddress);
//获取本机的域名和ip
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
执行结果:
channel.17doubao.com/47.95.29.130
47.95.29.130
DESKTOP-5VL3GB8/192.168.137.1
3、TCP和UDP的区别
TCP: 传输层协议
1. 基于连接
2. TCP要求系统资源较多
3. 流模式(TCP)
4. TCP保证数据正确性,保证数据顺序
应用场景:文件传输、发送和接受邮件、远程登录
UDP:传输层协议
只关心快速讲消息通过网络发送,而不关心收发状态
1. 面向无连接
2. 对系统资源的要求少
3. UDP程序结构较简单,数据报模式(UDP);
4. UDP可能丢包,UDP不保证顺序。
应用场景:直播、实时游戏、视频聊天
http协议: 应用层协议
超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。
HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用 TCP 80端口。
4、TCP三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手
三次握手流程:
1. 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
2. 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
3. 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端
四次挥手流程:
1. 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
2. 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
3. 服务器-关闭与客户端的连接,发送一个FIN给客户端
4. 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1