关于网络的学习

article/2025/8/23 4:54:17

网络的七层模型

这里写图片描述

 

TCP和UDP的区别

 TCP:可靠,速度稍慢,点对点通信,通信内容为字节码,多用于传输文件

UDP:不可靠了,速度很快,点对点、一对多、多对多通信,通信内容为数据报,多用于聊天,视频,语音

三次握手和四次挥手

三次握手

TCP(传输控制协议 Transfer Control Protocol)

分为服务端和客户端,属于可靠协议,不会丢失数据

建立TCP连接需要通过三次握手机制在服务端和客户端之间建立连接

 

  1. 客户端发送信号量SYN=1 和序列号seq=J 给服务端,客户端进入SYN_SENT(信号发送状态),等待服务器回答

  2. 服务器收到客户端信号后,发送信号量SYN=1、ACK=1,应答值ack=J+1,新的序列号seq=K给客户端,服务器进入SYN_RCVD(收到信号)状态

  3. 客户端收到服务器的应答消息,发送ACK=1,和应答值ack=K+1给服务器,客户端和服务器都进入ESTABLISHED(连接建立)状态

 四次挥手

  1. 客户端发送信号量FIN M给服务器端,进入FIN_WAIT1状态

  2. 服务端收到后,返回ack M+1给客户端,进入CLOSE_WAIT状态

  3. 服务端在发送FIN N信号给客户端

  4. 客户端收到后,返回应答信号ACK=1 ack=N+1给服务端,连接关闭

Socket编程

Socket(套接字)基于TCP/IP协议的网络编程机制

服务端

ServerSocker类,用于对本机的某个端口进行侦听

  • 创建

    ServerSocket(int port) port是端口号

  • 方法

    close() 关闭

    Socket accept() 接收客户端的Socket,会阻塞线程直到有客户端连接

客户端

Socket类,代表客户端向服务端发送连接,进行网络通知

  • 创建

    Socket(String ip,int port) 通过ip和端口连接服务端

  • 方法

    disconnect() 关闭

    OutputStream getOutputStream() 获得输出流

    InputStream getInputStream() 获得输入流

    注意:IO流关闭后,socket会自动关闭

/*** 服务端*/
public class Server {public static final int PORT = 9999;public void start() {System.out.println("服务器启动了!");//创建服务端Sockettry(ServerSocket serverSocket = new ServerSocket(PORT)){//接收客户端连接while(true) {Socket socket = serverSocket.accept();System.out.println("客户端连接了!" + socket.getInetAddress());//获得输入流,得到客户端发送的消息ObjectInputStream in = new ObjectInputStream(socket.getInputStream());String str = in.readUTF();System.out.println("接收消息:" + str);//获得输出流ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());out.writeUTF("服务器给你问好了!!");out.flush();}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new Server().start();}
}
/*** 客户端*/
public class Client {/*** 发送消息*/public void send(String ip,int port,String msg){//创建连接try(Socket socket = new Socket(ip,port)){//获得输出流ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());out.writeUTF(msg);out.flush();//获得输入流ObjectInputStream in = new ObjectInputStream(socket.getInputStream());String s = in.readUTF();System.out.println("服务器回应:" + s);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new Client().send("192.168.1.113",9999,"Hello,今天学点什么??");}
}

UDP编程

数据报协议,类似广播,属于不可靠的协议,无连接

服务端

DatagramSocket(int port) 指定端口获得发送的数据报

客户端

DatagramSocket() 作为客户端使用

主要方法

receive(DatagramPacket) 接收数据包

send(DatagramPacket) 发送数据报

DatagramPacket 包

DatagramPacket(String ip,int port) 发送前指定ip和端口

public class UDPServer {public static final int PORT = 8888;public void start(){System.out.println("启动服务");//创建UDP服务端try {DatagramSocket server = new DatagramSocket(PORT);//接收数据报while(true) {byte[] buff = new byte[1024];DatagramPacket packet = new DatagramPacket(buff,0,buff.length);//将接收的数据放入数据报server.receive(packet);String msg = new String(packet.getData(),0,packet.getLength(),"UTF-8");System.out.println("接收到:" + msg);}} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new UDPServer().start();}}public class UDPClient {public void send(String ip,int port,String msg){//创建客户端try {DatagramSocket client = new DatagramSocket();//创建数据报byte[] buff = msg.getBytes();DatagramPacket packet = new DatagramPacket(buff,0,buff.length, InetAddress.getByName(ip),port);//发送数据报client.send(packet);} catch (SocketException | UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new UDPClient().send("127.0.0.1",8888,"Hello UDP!!");}
}


http://chatgpt.dhexx.cn/article/L1ZubdaW.shtml

相关文章

计算机网络的学习1-2

计算机网络的学习 1-2 网络在我国的发展 第一阶段:国内互联网 1980年,铁道部开始网络实验。 89年11月,第一个公用分组交换网CNPAC建成。 第二阶段:互联网初期 91年6月,第一条互联网专线,中国科学院高…

计算机网络学习笔记(汇总)

计算机网络 根据所学大学课程对计算机网络较为全面的记载,考试复习,由于图片在github上,需要转储可能部分出不来,如有缺失可以去我的github项目下的github pages观看文档 1.概述 1.1 互联网组成 边缘部分 服务器不需要知道用户地…

计算机网络的学习(概述)

因特网概述 网络、互联网、因特网 网络:由若干节点(Node)和连接这些节点的链路构成 互联网:多个网络通过路由器互连,成为一个覆盖范围更大的网络 因特网:世界上最大的网络 注:Internet 和inte…

计算机网络学习笔记(谢希仁版本)

计算机网络学习笔记 1. 概述 1.1 计算机网络在信息时代的作用 互联网基本特点: 连通性:互联网上用户不管距离多远,都能通信,就像这些用户终端都彼此连通 共享性:指资源共享,包含信息、软件、硬件等共享…

计算机网络学习(一) 计算机网络概述

正在学习计算机网络课程,以下是学习《计算机网络-自顶向下方法》的一些笔记,部分图片来自mooc网 哈尔滨工业大学 计算机网络课程:https://www.icourse163.org/course/HIT-154005。 文章目录 1.计算机网络基本概念1.1计算机网络1.2什么是Inte…

【计算机网络学习笔记01】计算机网络概述(上)

【计算机网络学习笔记01】计算机网络概述(上) 计算机网络的诞生与发展 1 20世纪60年代出现的第一代计算机网络——基本的面向终端的计算机网络 相关知识点:第一台计算机诞生于1946年2月14日的美国宾夕尼亚大学,主要采用批处理方…

学习网络基础

网络基础 OSI模型(开放式系统互联参考模型)-7层 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本…

计算机网络学习总结

计算机网络学习总结~ 1. OSI,TCP/IP,五层协议的体系结构,以及各层协议: OSI 分层:7层,物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 …

计算机网络技术学习总结(详细,持续更新)

目录 01概述 1.1计算机网络在信息化时代中的作用 1.2因特网概述 1.3因特网的组成 边缘部分: 核心部分: 1.4计算机网络分类 A. 按拓扑结构 B.按覆盖范围 C.按传输速率 D.按传输介质 E.按使用范围 1.5计算机网络主要性能指标 1.6计算机网络体系结构 1.6.1网络协议 1.…

计算机网络 学习笔记

计算机网络 学习笔记 第一章 计算机网络体系结构1.1 计算机网络概述1.1.1 计算机网络的概念1.1.2 计算机网络的组成1.组成部分2.工作方式3. 功能组成 1.1.3 计算机网络的功能1.数据通信2.资源共享3.分布式处理4. 提高可靠性5. 负载均衡 计算机网络的发展1.1.4 计算机网络的分类…

【计算机网络学习笔记】计算机网络

计算机网络学习笔记 第一章 计算机网络概述1. 计算机网络概述1.1 计算机网络的概念1.2 计算机网络的组成1.3 计算机网络的功能1.4 计算机网络的分类1.5 计算机网络的标准化工作和相关组织1.6 计算机网络的性能指标1.7 计算机网络的非性能指标 2. 计算机网络的体系结构2.1 计算机…

计算机网络入门

计算机网络基础 一、计算机网络的发展 主机带终端形式的计算机网络 网络结构比较简单,负载量十分庞大,网络系统稳定性较低 基于通信网的计算机网络 采用存储转发技术,利用动态分配传输带宽的方式实现数据通信 标准化的计算机网络 提出了OS…

计算机网络基础学习指南

前言 计算机网络基础是研发/运维工程师都需掌握的知识,但往往会被忽略。 今天,我将对计算机网络基础学习进行详细阐述,涵盖 TCP / UDP协议、Http协议、Socket等,希望你们会喜欢。 1、计算机网络体系结构 1.1 简介 定义 计算机…

计算机网络学习路线

文章目录结构: 一 OSI与TCP/IP各层的结构与功能,都有哪些协议 运输层主要使用以下两种协议: UDP的主要特点: TCP的主要特点: 域名系统(Domain Name System缩写DNS,Domain Name被译为域名&…

计算机网络学习笔记

写在读前: 配套使用《计算机网络自顶向下法》与中国大学MOOC平台哈工大微课《计算机网络》。 文中图片侵删,转载需笔者口头同意。 更新日志: 2022.1.22 计网概述、传输层、应用层; 1. 计网概述 1. 通信系统模型 信源->发…

计算机网络学习01

OSI七层协议 一、首先从下往上看第一层物理层 1:说一下自己第一眼看到物理层的理解吧,因为正在学习数据库,用数据库的三层模式二级映像说明一下,数据库的底层也是体现了物理性,比如模式/内模式映像就是体现了物理独立…

【计算机网络 1】计算机网络概述,nginx原理jiangmo

边缘部分:用户直接使用(C/S方式、P2P方式) 核心部分:为边缘部分提供服务 3、功能组成 通信子网:实现数据通信 资源子网:实现资源共享/数据处理 四、计算机网络的分类 1、按分布范围分 广域网WAN、城域网MAN、局域网WAN、个人区域网PAN 2、按使用者分 公用网、专用…

计算机网络的基础学习

计算机网络 计算机网络向用户提供的两个最重要的功能:(1)连通性(2)资源共享。 互联网的组成 边缘部分:有所有连接在因特网上的主机组成。这部分由用户直接使用,用来进行通信和资源共享。 核心…

计算机网络学习

文章目录 一、HTTP学习1.1 HTTP 简介1.1.1 HTTP 工作原理1.1.2 HTTP 注意事项 1.2 HTTP 消息结构1.2.1 客户端请求消息1.2.1.1 请求行1.2.1.2 请求头1.2.1.3 请求数据 1.2.2 服务器响应消息 1.3 HTTP 请求方法1.3.1 POST 与 GET 的区别 1.3 HTTP 状态码 二、TCP/IP学习2.1 TCP/…

浅谈数据库优化方面的经验

浅谈数据库优化方面的经验 任何系统、网站几乎都离不开数据库,数据库好比人大脑的记忆系统,没有了数据库就没有了记忆系统。而数据库优化则相当于在同等智力的情况下,利用一种高效率地记忆方法进行更快更优的记忆。那么数据库优化具体有哪些…