JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)

本文详细介绍了JavaSE中的网络编程,包括InetAddress类、端口概念、TCP和UDP协议的工作原理及其区别。通过实例展示了TCP文件上传和UDP通信。此外,还讨论了TCP与UDP在可靠性、实时性和应用场景上的差异,并涵盖了URL和协议相关的面试题。
摘要由CSDN通过智能技术生成

1. 概述

  • 网络编程:使用套接字(socket)来达到进程间通信,现在一般称为TCP/IP编程

  • 套接字(socket):网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。

  • 套接字原理机制
    通信的两端都有Socket。
    网络通信其实就是Socket间的通信。
    数据在两个Socket间通过IO传输。

  • 网络编程三要素①IP地址:InetAddress: 网络中设备的标识,不易记忆,可用主机名;②端口号: 用于标识进程的逻辑地址,不同进程的标识;③传输协议: 通讯的规则常见协议:TCP,UDP。

  • IP地址分类
    A类:1.0.0.1—127.255.255.254
    (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址)
    (2)127.X.X.X是保留地址,用做循环测试用的。
    B类:128.0.0.1—191.255.255.254 172.16.0.0—172.31.255.255是私有地址。
    C类:192.0.0.1—223.255.255.254 192.168.X.X是私有地址
    D类: 224.0.0.1—239.255.255.254
    E类: 240.0.0.1—247.255.255.254

  • 参考模型
    在这里插入图片描述

2. InetAddress类

  • 表示互联网协议 (IP) 地址,方便我们对IP地址的获取和操作。

  • InetAddress.getByName(String host) //在给定主机名的情况下获取主机的IP地址

  • inetAddress.getHostAddress() //获取IP

  • inetAddress.getHostName() //获取主机名

  • 实例
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

3. 端口

  • 端口表示计算机上的一个程序的进程;端口的表示是一个16位的二进制数,2个字节,对应十进制的0~65535;单个协议下,端口号不能冲突,多个协议下,端口号可以相同;
  • 分类:公有端口:0~1023
    程序注册端口:1024~49151,用户分配或者程序
    动态、私有:49152~65535
  • 实例
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述

4. TCP协议

  • TCP协议:传输控制协议,是可靠连接,类似于打电话,只有等待对方接通的时候才可以交流,也就是确认了对方可以传信息,才会发送信息,三次握手,四次挥手,但是传输速度慢;

4.1 传输消息

  • 实例:
    客户端:

    在这里插入图片描述
    服务器
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

4.2 文件上传

  • 实例

客户端
在这里插入图片描述
服务端

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

5. UDP协议

  • UDP协议:用户数据报协议,是不可靠的,就像发短信,发出去就完事了,对方是否接收到就与自己无关,但是传输速度快;
  • 实例

用户端

在这里插入图片描述
服务器

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

6. TCP与UDP区别

  • TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是专门为了在不可靠的网络中提供一个可靠的端对端字节流而设计的,面向字节流。
  • UDP(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供简单不可靠的非连接传输层服务,面向报文。

区别:
1) TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低;
2) 由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全;
3) 在传输相同大小的数据时,TCP首部开销20字节;UDP首部开销8字节,TCP报头比UDP复杂,故实际包含的用户数据较少。TCP在IP协议的基础上添加了序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包或乱序,而UDP有丢包,故TCP开销大,UDP开销较小;
4) 每条TCP连接只能时点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。

应用场景选择

  • 对实时性要求高和高速传输的场合下使用UDP;
  • 在可靠性要求低,追求效率的情况下使用UDP;
  • 需要传输大量数据且对可靠性要求高的情况下使用TCP。

7. URL

  • 统一资源定位符:定位资源的,定位互联网上的某一个资源
  • 实例
    在这里插入图片描述

8. 下载资源

  • 代码在这里插入图片描述

9. 协议相关面试题

(1)讲一下浏览器从接收到一个 URL 到最后展示出页面,经历了哪些过程。

1、DNS 解析
2、TCP 连接
3、发送 HTTP 请求
4、服务器处理请求并返回 HTTP 报文
5、浏览器解析渲染页面

(2)http 和 https 的区别

1、连接的端口不一样,http 是 80,https 是 443
2、http 连接很简单,没有状态; https 是 ssl 加密的传输,身份认证的网络协议,相对 http 传输比较安全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值