网络协议与计算机网络体系结构

  • 知识点总结
  • 网络协议与分层体系结构
  • 开放系统互连参考模型OSI/RM
    • 五层的体系结构
    • 【例】主机甲向主机乙发送数据
    • 实体和服务访问点SAP
    • PDU:协议数据单元
  • TCP/IP体系结构
    • TCP/IP 协议栈
    • 沙漏计时器形状的TCP/IP协议族
    • 两者的区别
  • 网络通信标准化组织
    • 因特网的标准化工作
  • 【补充】TCP/IP 协议
    • TCP vs UDP
      • TCP 数据
      • UDP 数据
      • TCP - 三次握手 - 建立连接
      • TPC - 四次挥手 - 释放连接
  • OSI/RM和TCP/IP体系结构的比较
  • Java网络编程模拟人工智障聊天(狗头)
    • 服务端代码
    • 客户端代码

计算机专业基础笔记目录可以点这里:计算机专业基础笔记目录

Java笔记目录可以点这里:Java 强化笔记

知识点总结

  1. 网络中计算机的硬件和软件存在各种差异,为了保证相互通信及双方能够正确地接收信息,必须事先形成一种约定,即网络协议协议是指通信双方必须遵循的、控制信息交换的规则的集合,是一套语义和语法规则,用来规定有关功能部件在通信过程中的操作,它定义了数据发送和接收工作中必经的过程。协议规定了网络中使用的格式、定时方式、顺序和差错控制。一般说,一个网络协议主要由语法、语义和同步三个要素组成

  2. 计算机网络体系结构是计算机网络的各层及其服务和协议的集合,也就是它们所应完成的所有功能的定义,是用户进行网络互连和通信系统设计的基础。

  3. OSI七层模型从下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。类似于OSI-RM层次模型,TCP/IP的层次结构包含了四个层次,从下到上分别为网络接入层互连网络层传输层应用层。它们有一定的对应关系。

  4. 协议各层间存在信息交换,一个系统中的相邻两个层次间的信息交换是通过服务访问点这样的接口实现的。每一层和相邻层有接口,较低层通过接口向它的上一层提供服务,但这一服务的实现细节对上层是屏蔽的。较高层又是在较低层提供的低级服务的基础上实现更高级的服务。

  5. 目前在国际上最著名的两个国际标准化组织分别是ISOITU-TITU-T主要负责电话和数字通信领域的建议和标准。因特网的标准化工作由称为IAB的组织负责,下设Task Force负责具体的某一方面标准,如IETF负责因特网近期发展的工程与标准问题。有关文档成为RFC。如著名的 IP 协议和 TCP 协议的文档为RFC791RFC793

网络协议与分层体系结构

协议:是指通信双方必须遵循的、控制信息交换的规则的集合,是一套语义和语法规则,用来规定有关功能部件在通信过程中的操作,它定义了数据发送和接收工作中必经的过程。协议规定了网络中使用的格式、定时方式、顺序和检错。

协议的组成:语法、语义、同步

网络体系结构:计算机网络的分层、每层的功能以及每层使用到的协议的集合。

协议层次模型:下层为上层提供服务

开放系统互连参考模型OSI/RM

为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型

  • OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构

五层的体系结构

  • 应用层:直接为用户的应用进程提供服务
    例如万维网服务需要HTTP协议,电子邮件需要SMTPMIME等协议,QQ聊天等应用进程。
  • 传输层:为两台主机中进程之间的通信提供服务
    注意是进程,因此socket编程中需要IP和端口号,因为每个进程的端口号不同。
  • 网络层:为网络上的不同主机之间提供分组的传输服务
  • 数据链路层:将源计算机网络层来的数据可靠的传输到相邻节点的目标计算机的网络层。
  • 物理层:透明的传送比特流

【例】主机甲向主机乙发送数据








实体和服务访问点SAP

  • 实体:表示任何可以发送和接收信息的硬件或者软件进程。
  • 服务访问点(SAP):指相邻两层交换信息的地方。

PDU:协议数据单元

TCP/IP体系结构


主机A:

  • 应用层:直接为用户的应用进程提供服务。
  • 传输层:负责为两台主机中的各个应用程序之间提供通信服务。
  • 互连网络层: 负责独立地将分组从源主机送往目的主机,为分组提供最佳路由选择和交换功能。
  • 网络接入层: 它负责接收从网络层交付的IP分组,并将IP分组封装在帧中,通过底层的物理网络发送出去。

TCP/IP 协议栈

沙漏计时器形状的TCP/IP协议族



两者的区别

出发点不同 :

  • OSI-RM是作为国际标准而制定的,不得不兼顾各方,考虑各种情况,造成OSI-RM相对比较复杂,协议的数量和复杂性都远高于TCP/IP
  • 早期TCP/IP协议是为军用网ARPANET设计的体系结构,一开始就考虑了一些特殊要求,如可用性,残存性,安全性,网络互联性以及处理瞬间大信息量的能力等。

对一些问题的处理方法不同 :

  • 对层次间的关系:OSI-RM模型严格按层次结构,而TCP/IP可以跨层;
  • 无连接服务问题 :OSI-RM模型只考虑面向连接的服务,而TCP/IP同时还考虑无连接服务。

网络通信标准化组织

  • ISO(1947年成立)
  • ITU(1865年成立)

因特网的标准化工作


RFC (Request For Comments),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。RFC文件是由Internet Society(ISOC)赞助发行。基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多在标准内的论题,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中

【补充】TCP/IP 协议

TCP/IP 协议,简称 TCP/IP

  • 是一个网络通信模型,以及一整个网络传输协议家族,为网际网络的基础通信架构

TCP/IP 不仅仅指的是 TCPIP 两个协议

  • 是指一个由 FTPSMTPTCPUDPIP 等协议构成的协议家族
  • TCPIP 协议是该协议家族中最早通过的标准,所以称为 TCP/IP

TCP:Transmission Control Protocol,传输控制协议

IP:Internet Protocol,网际协议

TCP vs UDP

TCP 数据


在 Java 中,使用 java.net.Socketjava.net.ServerSocket 可以实现 TCP 请求

UDP 数据


在 Java 中,使用 java.net.DatagramSocket 可以实现 UDP 请求

TCP - 三次握手 - 建立连接

TPC - 四次挥手 - 释放连接

OSI/RM和TCP/IP体系结构的比较

Java网络编程模拟人工智障聊天(狗头)

服务端代码

package com.mj;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TCPServer {public static void main(String[] args) throws Exception {try(ServerSocket server = new ServerSocket(8888)){while(true){Socket client = server.accept();new Thread(() -> {try {doClient(client);client.close();} catch (Exception e) {e.printStackTrace();}}).start();}}}static void doClient(Socket client) throws Exception{try(ByteArrayOutputStream baos = new ByteArrayOutputStream();InputStream is = client.getInputStream();OutputStream os = client.getOutputStream();){ // 读取客户端数据byte[] buffer = new byte[8192];int len;while((len = is.read(buffer)) != -1){baos.write(buffer, 0, len);}byte[] bytes = baos.toByteArray();String content = new String(bytes, "UTF-8");String ip = client.getInetAddress().getHostAddress();System.out.format("服务器接收到[%s]的数据:%s\n", ip, content);// 写数据给客户端os.write(doString(content).getBytes("UTF-8"));}}static String doString(String str){str = str.replace("你", "朕");str = str.replace("吗", "");str = str.replace("么", "朕");str = str.replace("?", "!");str = str.replace("?", "!");return str;}public static void test() throws IOException{ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();ByteArrayOutputStream baos = new ByteArrayOutputStream();InputStream is = socket.getInputStream();byte[] buffer = new byte[8192];int len;while((len = is.read(buffer)) != -1){baos.write(buffer, 0, len);}byte[] bytes = baos.toByteArray();String string = new String(bytes, "UTF-8");System.out.format("服务器接收到[%s]的数据:%s\n", socket.getInetAddress(), string);is.close();baos.close();socket.close();serverSocket.close();}
}

客户端代码

随便搭了个界面,搞笑用的。

package com.mj;import java.awt.BorderLayout;
import java.awt.Font;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;public class MyFrame extends JFrame {public MyFrame(){setBounds(300, 300, 400, 200);setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel panel = new JPanel(new BorderLayout());setContentPane(panel);// 字体Font font = new Font("微软雅黑", Font.PLAIN, 30);JLabel label = new JLabel();label.setFont(font);panel.add(label, BorderLayout.CENTER);JTextField tf = new JTextField(10);tf.setFont(font);panel.add(tf, BorderLayout.SOUTH);JButton sendBtn = new JButton("发送");sendBtn.setFont(font);sendBtn.addActionListener((evt) -> {try(Socket socket = new Socket("127.0.0.1", 8888);OutputStream os = socket.getOutputStream();InputStream is = socket.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();) {// 写数据到服务器os.write(tf.getText().getBytes("UTF-8"));// 关闭输出(表明写给服务器的内容都写完了)socket.shutdownOutput();// 读取服务器数据byte[] buffer = new byte[8192];int len;while((len = is.read(buffer)) != -1){baos.write(buffer, 0, len);}byte[] bytes = baos.toByteArray();String content = new String(bytes, "UTF-8");label.setText("人工智障:" + content);} catch (Exception e) {e.printStackTrace();}});panel.add(sendBtn, BorderLayout.EAST);}}
package com.mj;import java.io.IOException;public class TCPClient {public static void main(String[] args) throws Exception, IOException {MyFrame myFrame = new MyFrame();myFrame.setTitle("对方是人工智障");myFrame.setVisible(true);/*   Socket socket = new Socket("127.0.0.1", 8888);OutputStream os = socket.getOutputStream();os.write("嘿嘿嘿".getBytes("UTF-8"));os.close();socket.close();*/}
}


【计算机网络】网络协议与计算机网络体系结构(OSI参考模型、TCP/IP体系、网络通信标准化组织)及 Java网络编程相关推荐

  1. 华为数通HCIA学习笔记之OSI参考模型TCP/IP模型

    OSI模型(Open systems Interconnection Model),由国际化标准ISO收录在ISO 7489标准中并于1984年发布. OSI参考模型: 名称 作用 7.应用层 为应用 ...

  2. OSI参考模型 TCP/IP协议族 数据封装与解封过程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一. OSI参考模型和TCP/IP协议族 1.OSI七层参考模型 ①应用层 ②表示层 ③会话层 ④传输层 ⑤网络层 ⑥数据链 ...

  3. 【教女朋友学网络系列1】之OSI与TCP/IP

    关于OSI模型与TCP/IP模型 序言 一.分层思想 二.OSI七层参考模型 三.OSI模型 VS TCP/IP模型 四.TCP/IP协议族 1.组成 2.三种协议族 五.端口号 1.类别 六.数据封 ...

  4. 计算机网络(OSI、TCP/IP、网络协议、常见网络设备工作原理)

    目录 OSI模型 TCP/IP模型 网络协议 IP协议 IP数据报格式 IP数据报分片 IPv4地址 NAT协议 ARP/RARP协议 ARP RARP DHCP协议 ICMP协议 ICMP差错报告报 ...

  5. 【计算机网络】计算机网络概述 : 总结 ( 概念 | 组成 | 功能 | 分类 | 性能指标 | OSI 七层参考模型 | TCP/IP 模型 | 五层参考模型 )★★★

    文章目录 一.计算机网络概念 ★ 二.计算机网络组成 ★ 三.计算机网络功能 ★ 四.计算机网络分类 ★ 五.性能指标 ★★ 六.分层架构 ★★ 一.计算机网络概念 ★ 计算机网络 是 互连的 , 自 ...

  6. 服务器和交换机之间网络协议,网络协议是计算机网络中服务器,计算机,交换机.doc...

    网络协议是计算机网络中服务器,计算机,交换机 篇一:计算机网络-参考答案 (1)不能保证所有题目都在里面,但能保证大部分题目都在这里. (2)建议用快捷方式ctrl+f 进行答案的查找,关键字只需复制 ...

  7. OSI和TCP/IP网络参考模型傻傻分不清?图解和各层作用详细说明

    1.OSI参考模型 1.1 产生背景 在网络发展的早期时代,网络技术的发展变化速度非常快,计算机网络变得越来越复杂,新的协议和应用不断产生,而网络设备大部分都是按厂商自己的标准生产,不能兼容,很难相互 ...

  8. 网络——参考模型之ISO/OSI和TCP/IP

    网络参考模型 ISO/OSI 七层参考模型 TCP/IP 四层参考模型 ISO/OSI vs TCP/IP TCP vs IP 五层参考模型 ISO/OSI 七层参考模型 层级 各层功能 应用层 为用 ...

  9. OSI与TCP/IP各层的结构与功能,都有哪些协议

    前言: 今天更新一下计算机网络的一些非常重要的知识,可能很多人都不知学计算机网络有什么用,我想说的是它真的比较重要,像咱们学校只要是学计算机这个专业都要学习这门课程.另外大家要是去一些像BAT,阿里, ...

最新文章

  1. centos下使用mysql,centos下使用mysql的一些问题和解决方法
  2. TreeView获取目录下的所有文件
  3. 手术步骤_做过 激光手术 恢复视力 的人们,后面怎么样呢?
  4. linux proc 占用空间,一种诡异的Linux磁盘空间被占满问题
  5. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)
  6. stark组件开发之组合搜索基本显示
  7. stl max函数_C ++ STL中带有示例的array :: max_size()函数
  8. IMail邮件服务-1
  9. PRML-系列一之1.2.4
  10. Spring Cloud随记----分布式配置中心再探---消息总线的引入
  11. weblogic宕机crash问题解决分享
  12. 疲劳测试分析软件,ANSYS nCode DesignLife高级疲劳耐久性分析_ANSYS仿真工具_其他软件_工业软件_安世亚太...
  13. 打印文件出现xps_什么是XPS文件?Windows为什么要我将其打印到一个文件?
  14. Windows和Xyplorer的完美结合
  15. crash工具分析sysdump使用
  16. strtok函数源码
  17. 实现字符和Unicode码互换 (Java经典编程案例)
  18. 爸爸,是这个时代的稀缺品
  19. 老笔记整理二:网页小问题汇总
  20. java核心技术读书笔记—继承

热门文章

  1. 一篇文章,可以同时拥有4份收益,你知道吗?
  2. 职场上别人只做不说的潜规则
  3. 你自己的事,你不操心谁操心?
  4. 为什么那么多公司不用 .NET,而选择PHP、JSP,是 .NET有什么缺点吗?
  5. 现代汇编教材还是基于8086,对理解当今CPU(如i9)有帮助吗,还是教程太滞后?
  6. 口语技巧-Part2答题逻辑
  7. sublime text3占用CPU过高
  8. Mybatis_day4_Mybatis的缓存
  9. lamp怎么使用mysql_lamp(四)mysql操作
  10. sql游标 while_用SQL Server中的排名函数替换SQL While循环和游标,以提高查询性能