javase-网络通信

网络编程

编写运行在多个设备上的程序、设备通过网络链接起来。

OSI分层模型

请添加图片描述

应用层:

最靠近用户的一层、为用户提供了一个访问网络的接口。常见网络协议有:HTTP,HTTPS,FTP,POP3、SMTP 等

表示层:

数据格式化、数据加密

会话层:

负责建立、管理、终止会话连接。

传输层:

负责建立一个端到端的连接、处理数据包错误、数据包顺序和其他重要的传输问 题。 传输层向上层屏蔽了下层数据通信的细节。

TCP、UDP就是属于这一层、端在这里指的是端口号。

网络层:

通过ip寻址来建立两个节点之间的连接、保证数据正确无误传输、即ip协议层。

数据链路层:

负责在物理网络上传输数据。

将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用 MAC 地址)来访问介质,并进行差错检测。 数据链路层又 分为 2 个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。 MAC 子层处理 CSMA/CD 算法、数据出错校验、成帧等;LLC 子层 定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC 子层并非必需的。

物理层:

最终信号的传输通过物理层实现、通过物理介质传输比特流。如网线电缆。

TCP/IP五层协议

TCP/IP 协议(传输控制协议/互联网协议)不是简单 的一个协议,而是一组特别的协议,包括:TCP,IP,UDP,ARP 等, 这些被称为子协议。

请添加图片描述

网络层: IP(网络之间的互联协议)

传输层: TCP(传输控制协议) UDP(用户数据报协议)

应用层: Telnet(Internet 远程登录服务的标准协议和主要 方式)、FTP(文本传输协议)、HTTP(超文本传送协议)

端口号:

包括物理端口和逻辑端口、物理端口是用于连接物理设备 之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP 协议中的 端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。

最多可以有 65536 个端口。端口是通过 端口号来标记的,端口号只有整数,范围是从 0 到 65535。

URL:

由协议、ip地址、端口号、路径、文件名、请求参数。

Socket编程

TCP方式:

传输控制协议、保障了两个应用程序之间的可靠通信、通常用于互联网协议,被称 TCP / IP。

UDP方式:

用户数据报协议、一个无连接协议、提供了应用程序之间要发送的数据的数据包。

一个典型的 UDP 客户端要经过下面三步操作:

  1. 创建一个 DatagramSocket 实例,可以有选择地对本地地址和 端口号进行设置,如果设置了端口号,则客户端会在该端口号上监 听从服务器端发送来的数据;
  2. 使用 DatagramSocket 实例的 send()和 receive()方法来 发送和接收 DatagramPacket 实例,进行通信;
  3. 通信完成后,调用 DatagramSocket 实例的 close()方法来关 闭该套接字。 由于 UDP 是无连接的,因此 UDP 服务端不需要等待客户端的请求 以建立连接。另外,UDP 服务器为所有通信使用同一套接字,这点 与 TCP 服务器不同,TCP 服务器则为每个成功返回的 accept()方法 创建一个新的套接字。

一个典型的 UDP 服务端要经过下面三步操作:

  1. 创建一个 DatagramSocket 实例,指定本地端口号,并可以有 选择地指定本地地址,此时,服务器已经准备好从任何客户端接收 数据报文;
  2. 使用 DatagramSocket 实例的 receive()方法接收一个 DatagramPacket 实例,当 receive()方法返回时,数据报文就 包含了客户端的地址,这样就知道了回复信息应该发送到什么地 方;
  3. 使用 DatagramSocket 实例的 send()方法向服务器端返回 DatagramPacket 实例。

TCP和UDP的区别

  • TCP有连接、UDP无连接
  • TCP资源消耗多、因为需要创建连接。
  • TCP是一对一连接、所以能保证数据正确性、UDP容易丢包。
  • TCP保证数据顺序、是有序的。UDP是无序的。

BIO、NIO、AIO

BIO

同步阻塞、实现模式为一个连接一个线程

NIO

同步非阻塞:服务器实现模式为 一个请求一个线程

AIO

异步非阻塞:服务器实现模式为 一个有效请求一个线程

联系和区别

  • 都是在TCP/IP基础上进行的
  • BIO和NIO都是同步请求、AIO是异步请求
  • BIO是阻塞情况、而,NIO 和 AIO 是非阻塞

HTTP协议

http协议是超文本传输协议、属于应用层协议、规定了客户端和服务端的传输数据的格式。属于无状态的、对于前面的传递过的信息没有记录。

请求方式主要有: GET,POST,HEAD,PUT,DELETE 等等,最主要的 get,post 方法

get请求:数据以URL形式传输、对数据大小有一定限制、安全性比较低、用于传输数据量小、安全性要求比较低。数据在 URL 中对所有人都是可见的。

post请求:数据以包的形式传输、数据大小没有限制、比较安全、用于传输数据量大、对安全性要求较高的数据。数据在 URL 中对所有人都是可见的。

HTTP 转态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理 

2xx:成功--表示请求已被成功接收、理解、接受 

3xx:重定向--要完成请求必须进行更进一步的操作 

4xx:客户端错误--请求有语法错误或请求无法实现 

5xx:服务器端错误--服务器未能实现合法的请求

TCP协议

三次握手

第一次握手:建立连接、客户端发起请求、标记自身为未连接状态、等待服务端确认

第二次握手:接收请求并确认可以连接、标记自身为未连接状态

第三次握手:客户端接收到同意连接请求后、进入连接状态

Alice 向 Bob 发送一个请求建立连接的消息,表示想要和 Bob 聊天。

Bob 收到 Alice 的请求建立连接的消息后,回复一个确认连接的消息,表示同意和 Alice 聊天。

Alice 收到 Bob 同意的消息后,连接建立。

四次挥手

第一次挥手:A表示没有信息发送给B、请求断开连接

第二次挥手:B确认自己有没有数据发送

第三次挥手:B向A表示也没有信息发送、确认可以断开连接

第四次挥手:A接收到信息、双方断开连接

Alice 向 Bob 发送一个消息,表示要结束聊天。

Bob 收到 Alice 的消息后,向 Alice 发送一个确认消息,表示已经收到 Alice 的消息。

Bob 向 Alice 发送一个消息,表示也要结束聊天。

Alice 收到 Bob 的消息后,向 Bob 发送一个确认消息,表示已经收到 Bob 的消息。

TCP 协议在哪一层?IP 协议在那一层?HTTP 在哪一层?

TCP在传输层、IP在网络层、HTTP在应用层
表示已经收到 Alice 的消息。

Bob 向 Alice 发送一个消息,表示也要结束聊天。

Alice 收到 Bob 的消息后,向 Bob 发送一个确认消息,表示已经收到 Bob 的消息。

TCP 协议在哪一层?IP 协议在那一层?HTTP 在哪一层?

TCP在传输层、IP在网络层、HTTP在应用层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值