JavaEE--初识网络

一.网络通信基础

1.1 IP地址

IP地址主要用于标识网络设备的网络地址,是一个4个字节的数字,使用三个.分成四个部分,每个部分1个字节且表示的范围为0~255,例如127.0.0.1

1.2 端口号

端口号用于标识一个主机上的不同应用程序,每个程序在启动时,需要绑定一个与其他程序不重复的端口号,端口号是一个2个字节的整数,范围是0~65535。

1.3 协议

协议是网络通信经过的所有网络设备都必须共同遵从的一组约定。只有遵守这个约定,计算机之间才能相互通信交流。

1.4 协议分层

网络通信是一个非常复杂的事情,涉及到很多的细节问题,如果只用一个协议来约定所有细节,这个协议就会非常庞大且复杂,这就需要对协议进行拆分,同时为了避免将功能复杂的协议拆分成多个功能单一的协议后,协议过多不易管理的问题,就对协议进行了分层,把很多协议按照功能分成不同的层级,每个层级都有对应的目标,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。

协议分层的好处:1) 起到封装的效果(某一层协议,不需要知道其他层协议的细节,降低学习使用成本) 2) 任意层级的协议都是可以灵活替换的

1.5 TCP/IP五层模型

  

OSI模型较为复杂且不实用,这里主要介绍简化版本TCP/IP模型(真实世界采取的网络分层模型)

应用层:负责应用程序间沟通

传输层:负责两台主机之间的数据传输

网络层:负责地址管理和路由选择

数据链路层:负责设备之间的数据帧的传送和识别

物理层:负责光/电信号的传输方式

网络设备所在分层:(1) 主机→操作系统内核实现了从传输层到物理层的内容 (2) 路由器→实现了从网络层到物理层 (3) 交换机→实现了从数据链路层到物理层 (4)集线器→实现了物理层

1.6 封装和分用

协议的层和层之间通常通过封装和分用配合工作,那么什么是封装,什么是分用呢?首先我们来了解一下封装,封装的大致过程可以用下图表示

这个层层包装数据,不停的加数据报头的过程,就是封装,可以简单的理解为装快递时的过程,而分用,实际就是拆快递的过程,是封装的“逆过程”。

分用的大致过程如下:

1.物理层→收到一系列光电信号,把这些信号转成二进制数据,交给数据链路层

2.数据链路层→按照以太网协议,对数据进行解析,解析出来的载荷数据交给网络层

3.网络层→按照IP协议格式进一步解析,解析报头中的关键信息,取出载荷交给传输层

4.传输层→按照TCP/UDP格式进行解析,解析报头中的关键信息,把载荷交给对应的应用程序

5.应用层→对应程序获取到传输层解析出来的应用层数据包,按照程序自己的协议格式,对该数据包进行解析后执行对应操作

二.网络编程基础

2.1 发送端与接收端

发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。

接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。

收发端:发送端和接受端两端,简称为收发端。

2.2 请求和响应

当我们获取一个网络资源时,通常涉及到两次网络数据传输:

1.请求数据的发送  2.响应数据的发送

这个过程就像是在饭店中点餐,要先进行点餐(请求),饭店再根据需求上菜(响应)

2.3 客户端与服务端

服务端:在网络数据传输场景中,提供服务的一方进程,称为服务端

客户端:获取服务的一方进程,称为客户端

2.4 网络通信流程

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaEE-图书管理系统通常需要包含以下数据库表: 1. 用户表(user):包括用户ID、用户名、密码、邮箱等字段。 2. 图书表(book):包括图书ID、图书名称、作者、出版社、ISBN号等字段。 3. 借阅记录表(borrow_record):包括借阅记录ID、用户ID、图书ID、借阅时间、归还时间等字段。 4. 管理员表(admin):包括管理员ID、管理员名称、密码等字段。 以下是JavaEE-图书管理系统数据库代码示例: ```sql -- 用户表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 图书表 CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `author` varchar(50) NOT NULL, `publisher` varchar(50) NOT NULL, `isbn` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 借阅记录表 CREATE TABLE `borrow_record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `book_id` int(11) NOT NULL, `borrow_time` datetime NOT NULL, `return_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_user_id_idx` (`user_id`), KEY `fk_book_id_idx` (`book_id`), CONSTRAINT `fk_book_id` FOREIGN KEY (`book_id`) REFERENCES `book` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 管理员表 CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` -- 相关问题--: 1. 如何创建数据库表? 2. 如何在JavaEE中连接数据库? 3. 数据库中的什么是外键?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值