osi网络7层架构

简介: osi网络7层架构

一、osi网络7层架构

ip:网络唯一标识。(internet protocol address)网络互联协议地址。分为网络地址和主机地址。

port:端口号,每一个网络应用程序都需要一个以上的端口号。(1-65535)。1000以内的不要用。

osi7层架构

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

tcp协议(传输控制协议),保证两个应用程序之间可靠的网络通信。可靠的,低效的。

telent ftp smtp

udp协议(用户数据报文协议)。面向无连接的不可靠的,高效的。

qq snmp dns 在线视频

二、socket简介

套接字,用于描述一个ip和端口号绑定的通信会话(socket连接)。每一个网络服务都会打开一个socket连接。

serverSocket

位于java的net包下面。

此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

Socket

此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。

三、基于TCP协议的socket编程

创建一个基于tcp协议的scoket服务器

类 ServerSocket

此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。

public class TalkServer {
public static void main(String[] args) throws Exception {
//创建一个serversocket在端口7000上,监听客户端请求
ServerSocket server= new ServerSocket(7000);
Socket socket = server.accept();//获取socket对象
//由Scoket对象获得输入流,并构造相应的bufferedReader对象
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由socket对象得到输出流,并构造printWrite对象
PrintWriter os = new PrintWriter(socket.getOutputStream(), true);
//由控制台输入构造BufferedReader对象
BufferedReader sin= new BufferedReader(new InputStreamReader(System.in));
System.out.println(“client:”+in.readLine());//打印客户端消息
String line = sin.readLine();//从控制台读取输入消息
while(!line.equals(“bye”)){
//把line返回给client
os.println(line);
System.out.println(“server:”+line);
System.out.println(“client:”+in.readLine());
line=sin.readLine();//读取下一条消息
}
  in.close();
  os.close();
  sin.close();
  socket.close();
}

}

使用多线程技术完成多服务对多客户端

package com.aaa.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TalkServerThread implements Runnable {
private Socket socket;
public TalkServerThread(Socket socket) {
  super();
  this.socket = socket;
}
@Override
public void run() {
  //由Scoket对象获得输入流,并构造相应的bufferedReader对象
  BufferedReader in;
  try {
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    //由socket对象得到输出流,并构造printWrite对象
    PrintWriter os = new PrintWriter(socket.getOutputStream(), true);
    //由控制台输入构造BufferedReader对象
    BufferedReader sin= new BufferedReader(new InputStreamReader(System.in));
    System.out.println("client:"+in.readLine());//打印客户端消息
    String line = sin.readLine();//从控制台读取输入消息
    while(!line.equals("bye")){
      //把line返回给client
      os.println(line);
      System.out.println("server:"+line);
      System.out.println("client:"+in.readLine());
      line=sin.readLine();//读取下一条消息
    }
    in.close();
    os.close();
    sin.close();
    socket.close();
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}

}

测试类

package com.aaa.tcp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MultiSocketServerTest {
/**
 * @param args
 * @throws Exception 
 */
public static void main(String[] args) throws Exception {
  //多个socket连接,但是端口号一致
  ServerSocket server=new ServerSocket(7000);
  Socket socket=null;
  while(true){
    socket = server.accept();//等待获取来自客户端的socket请求
    //一旦客户端请求到达,开启一个线程,来跟客户端交互
    new Thread(new TalkServerThread(socket)).start();
  }
}

}

四、基于UDP协议的socket编程

InetAddress
public static void main(String[] args) throws Exception {
InetAddress localHost = InetAddress.getLocalHost();
String hostName = localHost.getHostName();
System.out.println(hostName);
String hostAddress = localHost.getHostAddress();
System.out.println(hostAddress);
//获取远程网站的ip
  InetAddress baidu = InetAddress.getByName("www.baidu.com");
  System.out.println(baidu.getHostAddress());
}

使用upd模拟飞秋发送消息

package com.aaa.network;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;
/**
  • @author sunshaoshan
  • @description java 模拟飞秋发送消息
  • @company AAA软件
  • 2018-11-5下午4:45:53
*/
public class FeiQiuTest {
/**
*TODO
*@param args
*2018-11-5下午4:45:45
*/
public static void main(String[] args) {
DatagramSocket ds= null;
DatagramPacket dp = null;
InetAddress localHost;
String Version=“1_lbt4_0#128#000C29D68D8F#0#0#0#2.5a”;
Long id=new Date().getTime();//获取当前系统毫秒
String user=“孙韶山”;
String host=“sunshaoshan”;
//long IPMSG_SENDMSG = 0x00000020;//发消息
long IPMSG_SENDMSG = 209;//发消息
String msg=“I kill you!”;
while(true){
try {
    ds=new DatagramSocket();
    //localHost = InetAddress.getByName("DESKTOP-H5URIFQ");
    localHost=InetAddress.getLocalHost();
    String message=Version+":"+id+":"+user+":"+host+":"+IPMSG_SENDMSG+":"+msg;
    //封装数据报文,2425是飞秋的端口号
    ///1version(IPMSG版本):no(消息编号,可以用系统时间):user(发送消息的用户名):host(发送消息的主机名):command(上述Command常量,可以用|组合多个值):msg(消息内容) 
    byte[] buff= message.getBytes("gbk");
    dp = new DatagramPacket(buff, buff.length,localHost,2425);
    //发送报文
    ds.send(dp);
  } catch (UnknownHostException e) {
    e.printStackTrace();
  } catch (SocketException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }
  }
  • }

}


目录
相关文章
|
8天前
|
机器学习/深度学习 计算机视觉 iOS开发
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
31 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
|
12天前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
38 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
8天前
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
19 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
2月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
201 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
12天前
|
机器学习/深度学习 计算机视觉 iOS开发
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
53 12
|
1月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
2月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
180 3
图卷积网络入门:数学基础与架构设计
|
2月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
173 3
|
3月前
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
|
3月前
|
监控 安全 网络安全
网络安全新前线:零信任架构的实践与挑战
网络安全新前线:零信任架构的实践与挑战
49 0

热门文章

最新文章