【JavaLearn】 #(14) 络及分类、TCP、UDP协议、IP、Socket、TCP编程、UDP编程

1. 络基本概念

1.1 计算机 络

定义:是指将地理位置不同的具有独立功能(没有 络可以独立存在的)的多台计算机及其外部设备,通过通信线路连接起来,在 络操作系统, 络管理软件及 络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

  • 主干:计算机 络是计算机系统
  • 络功能:资源共享、信息传递
  • 络组成
    • 络硬件:计算机、外部设备、通信连接
    • 络软件: 络操作系统、 络管理软件、 络通信协议

分类–按照规模

  • 局域 LAN
  • 城域 MAN
  • 广域 WAN

分类–按照传输介质

  • 同轴电缆 络(类似于有线电视 的电缆)

  • 双绞线 络

  • 光纤 络(传输的为光信

  • 卫星 络

1.2 络通信协议

在 络中实现通信,必须要有一些约定(通信协议),对速率、传输代码、传输控制步骤等指定标准(好比交通规则)

问题: 络通信涉及内容很多:源地址、目标地址、加密解密、流量控制、路由控制等,如何实现如此复杂的 络协议/p>

===》:将复杂的成份分解成一些简单的成份,再将它们复合起来(同层间可以通信、上一层可以调用下一层,而不与再下一层发生关系)

络通信协议分层

  • 名义上的标准:ISO –> OSI 参考模型
  • 事实上的标准:TCP/IP协议栈

1.3 TCP/IP协议栈

络通信最常采用的协议

  • 络层主要协议:IP协议
  • 传输层主要协议:TCP 和 UDP 协议

1.5 UDP协议

无连接的传输层协议,提供面向事务的简单不可靠信息传送服务(发电 、发送群发短信)

  • 非面向连接,传输不可靠,可能丢失(一段信息分段后发送,不一定哪一段先到达
  • 发送不管对方是否准备好,接收方收到后也不回复
  • 可以广播发送
  • 非常简单的协议,开销少

应用案例:DNS、SNMP

1.6 IP地址和端口

IP地址,用来标志 络中的一个通信实体(计算机、路由器)的地址

分类

  • IPV4:32位地址,点分十进制表示,如192.168.0.1
  • IPV6:128位写成8个16位的无符 整数,每个整数用4个十六进制位标识,数之间用 : 分割

特殊的 IP 地址

  • 127.0.0.1:本机地址
  • 192.168.0.0 – 192.168.255.255 私有地址,专门为组织机构内部使用

端口(port)

  • IP地址用来标志一台计算机,但一个计算机可以提供多种应用程序,那么就需要使用端口来区分应用程序
  • 范围:0 – 65535(16位整数)

端口分类

  • 0 – 1023 :公认端口(比如 80给了 WWW,21给了 FTP等)
  • 1024 – 49151:注册端口(分配给用户或应用程序)
  • 49152 – 65535:动态/私有端口

IP和端口API

  • InetAddress 类:封装计算机的 ip地址,没有端口
  • InetSocketAddress:包含端口,用于 socket 通信

1.7 URL 统一资源定位符

Uniform Resource Locator:由 4部分组成:协议存放资源的主机域名端口 资源文件名

类似于寄信:用户(应用层)将信(数据)投入邮筒即可(邮筒的口,就是socket),进入Socket之后,怎么送信就是邮局、公路交管(传输层、 络层)等的事。

2. 络编程常用类

2.1 封装IP地址 – InetAddress

2.2 封装 IP 和 Port – InetSocketAddress

2.3 URL类

3. TCP编程

3.1 一次单向通信

  • 服务器端

    • 创建 ServerSocket,在指定端口监听(方法)

      并处理请求(如果客户端请求到来,返回对应的Socket,否则的话一直等待,线程也被阻塞)

  • 客户端

    • 创建 Socket,需要指定服务器的 ip 和端口 ,向服务器发送和接收响应
  • 发送数据

    • 需要使用输出流(OutputStream),可以通过 DataOutputStream 和 ObjectOutputStream 进行包装,提高效率
  • 接收数据

    • 使用输入流(InputStream),使用 DataInputStream 和 ObjectInputStream 进行包装

【JavaLearn】 #(14) 络及分类、TCP、UDP协议、IP、Socket、TCP编程、UDP编程

服务器端

客户端

注意:测试时,服务器端需要先启动,然后再启动客户端

3.2 一次双向通信

服务器端


                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月25日
下一篇 2022年2月25日

相关推荐