首页 > 编程语言 >19.网络编程之网络基础概念

19.网络编程之网络基础概念

时间:2023-11-05 10:46:07浏览次数:64  
标签:ARP 协议 19 IP 编程 网络 TCP 传输 客户端

19.网络编程之网络基础概念

学习目标

  • 了解OSI七层、TCP/IP四层模型结构

  • 了解常见网络协议格式

  • 掌握网络字节序和主机字节序之间的转换(大端法和小端法)

  • 说出TCP服务器端通信流程

  • 说出TCP客户端通信流程

  • 独立写出TCP服务器端代码

  • 独立写出TCP客户端代码

1.网络基础概念

1.1协议

概念: 协议事先约定好,大家共同遵守的一组规则, 如交通信号灯。从应用程序的角度看,协议可理解为数据传输和数据解释的规则;可以简单的理解为各个主机之间进行通信所使用的共同语言。

假设,A、B双方欲传输文件。规定:

第一次: 传输文件名,接收方接收到文件名,应答OK给传输方;

第二次: 发送文件的尺寸,接收方接收到该数据再次应答一个OK;

第三次: 传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。

这种在A和B之间被遵守的协议称之为原始协议,后来经过不断增加完善改进,最终形成了一个稳定的完整的传输协议,被广泛应用于各种文件传输,该协议逐渐就成了一个标准协议。

1.2分层模型

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

网络分层 OSI 7层模型:物数网传会表应

▶物理层---双绞线,光纤(传输介质),将模拟信号转换为数字信号

▶数据链路层---数据校验,定义了网络传输的基本单位-帧

▶网络层---定义网络,两台机器之间传输的路径选择点到点的传输

▶传输层---传输数据 TCP,UDP,端到端的传输

▶会话层---通过传输层建立数据传输的通道.

▶表示层---编解码,翻译工作。

▶应用层---为客户提供各种应用服务,email服务,ftp服务,ssh服务

OSI7层模型:
物数网传会表应
应用层: 主要就是应用程序,ftp ssh email http
表示层: 进行编解码和翻译工作
会话层: 建立会话和保持会话
传输层: 定义了端端端的传输,TCP UDP协议
网络层: 定义了点到点的传输,IP协议----路由器
数据链路层: 数据校验,定义了数据格式--帧,ARP协议 RARP协议
物理层: 通信介质-双绞线,光纤 调制解调器modemn(模数转换和数模转换)

1.3 数据通信过程

通信过程:其实就是发送端层层打包,接收方层层解包。

注意:这些操作不是用户自己做的,而是底层帮我们做好的。

数据通信过程:
在发送方是数据层层打包过程,在接收方是层层解包过程。

1.4 网络应用程序的设计模式

▶CS设计模式优缺点:

优点:

客户端在本机上可以保证性能,可以将数据缓存到本地,提高数据的传输效率,提高用户体验效果。

客户端和服务端程序都是由同一个开发团队开发,协议选择比较灵活。

缺点:

服务器和客户端都需要开发,工作量相对较大,调试困难,开发周期长;

从用户的角度看,需要将客户端安装到用户的主机上,对用户主机的安全构成威胁。

▶BS设计模式优缺点:

优点:

无需安装客户端, 可以使用标准的浏览器作为客户端;

只需要开发服务器,工作量相对较小;

由于采用标准的客户端,所以移植性好,不受平台限制。

相对安全,不用安装软件

缺点:

由于没有客户端,数据缓冲不尽人意,数据传输有限制,用户体验较差;

通信协议选择只能使用HTTP协议,协议选择不够灵活;

1.5 以太网帧格式

以太网帧格式就是包装在网络接口层(数据链路层)的协议

以ARP为例介绍以太网帧格式

目的端mac地址是通过发送端发送ARP广播,接收到该ARP数据的主机先判断是否是自己的IP,若是则应答一个ARP应答报文,并将mac地址填入应答报文中;若目的IP不是自己的主机IP,则直接丢弃该ARP请求报文。

详细讲解ARP协议

IP段格式

协议版本: ipv4,ipv6

16位总长度: 最大65536

8位生存时间ttl(网络连接下一跳的次数):为了防止网络阻塞

32位源ip地址,共个4字节!我们熟悉的ip都是点分十进制的,4字节,每字节对应一个点分位,最大为255 ,实际上就是整形数!

32位目的ip地址

8位协议:用来区分上层协议是TCP、UDP、ICMP还是IGMP协议。

16位首部校验和:只校验IP首部,数据的校验由更高层协议负责。

UDP数据报格式

通过IP地址来确定网络环境中的唯一的一台主机;

主机上使用端口号来区分不同的应用程序。

IP+端口唯一确定唯一一台主机上的一个应用程序。

TCP数据流格式:

稳定的, 安全的,可靠的

序号:TCP是安全可靠的,每个数据包都带有序号, 当数据包丢失的时候,需要重传,要使用序号进行重传。控制数据有序,丢包重传。

确认序号:使用确认序号可以知道对方是否已经收到了,通过确认序号可以知道哪个序号的数据需要重传。

16位窗口大小--滑动窗口(主要进行流量控制)

1.6网络名词术语解析(自行阅读扫盲)

标签:ARP,协议,19,IP,编程,网络,TCP,传输,客户端
From: https://www.cnblogs.com/codemagiciant/p/17810292.html

相关文章

  • 【教3妹学编程-算法题】使数组变美的最小增量运算数
    2哥 :3妹,脸上的豆豆好了没呢。3妹:好啦,现在已经没啦2哥 :跟你说很快就会消下去的,还不信~既然你的容颜和心情都如此美丽,那我们就再做一道关于美丽的题吧。3妹:切,2哥就会取笑我,伤心时让我做题,开心时也让我做题! 1题目: 给你一个下标从0开始、长度为n的整数数组nums,和一个整......
  • 有趣的Java之网络多线程——UDP编程
    UDP编程通信基本介绍类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能安全送到目的地,也不确信什么时候可以抵达。DatagramPacket对象封装了UDP数据报,在数据报中包含了发......
  • 一文读懂ReentrantLock在多线程编程中的作用和优点
    引言在当今这个数字化时代,软件开发已经离不开多线程编程。但是,多线程编程也带来了一系列复杂性和挑战,其中最关键的一个问题就是线程同步和互斥。为了应对这个问题,Java语言提供了一些工具,其中最强大的工具之一就是ReentrantLock。本文将对ReentrantLock进行深入探讨,介绍它在多线程编......
  • VM安装RedHat7虚机ens33网络不显示IP问题解决
    1、今天在VMware中安装RedHat7.4虚拟机,网络连接使用的是NAT连接方式,刚开始安装成功之后输入ifconfig还能看到ens33自动分配的IP地址,但是当虚机关机重启后,再查看IP发现原来的ens33网络已经没有了,只变成了这两个:然后输入ipa查看网卡信息发现出现了下面的信息:ens33:<BROADCA......
  • JUC并发编程学习笔记(十)线程池(重点)
    线程池(重点)线程池:三大方法、七大参数、四种拒绝策略池化技术程序的运行,本质:占用系统的资源!优化资源的使用!->池化技术(线程池、连接池、对象池......);创建和销毁十分消耗资源池化技术:事先准备好一些资源,有人要用就拿,拿完用完还给我。线程池的好处:1、降低资源消耗2、提高相......
  • Oracle 19c Linux平台启动时出现ORA-00800错误浅析
    这里简单介绍一下如何处理解决Linux平台下Oracle19c启动时,告警日志出现ORA-00800错误的问题,详情介绍请见下面内容:环境描述:操作系统:RedHatEnterpriseLinuxrelease8.8(Ootpa)数据库:19.16.0.0.0企业版问题描述:在Oracle19c启动时,在Oracle的告警日志中会出现下面这样一......
  • 神经网络稀疏综述
    神经网络稀疏综述1.稀疏的概念随着现代神经网络的规模不断提升,其消耗的内存,算力,能量都不断增加,这构成了在神经网络在实际应用中的瓶颈。如何尽可能的缩小网络同时又不损失其性能成为了一大神经网络方面的研究重点,目前常用的方法包括:剪枝,量化,网络结构搜索,知识蒸馏等。我们现在......
  • CCLINK IEFB总线转ETHERNET/IP网络的协议网关使欧姆龙和三菱的数据互通的简单配置方法
    想要实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。捷米JM-EIP-CCLKIE是一款ETHERNET/IP从站功能的通讯网关,该产品主要功能是实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。本网关连接到ETHERNET/IP总线和CCLINKIEFB总线上都可以做为从站使用。网关分别从ETHERNET/IP一侧......
  • 深入研究synchronized:解锁高效多线程编程的秘诀
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java的多线程编程里,让多个线程能够安全、高效地协同工作是非常重要的。而synchronized这个关键字,就是一个很重要的工具,可以帮助我们实现多线程同步。本文会深入讨论synchronized的作用、使用方法、工作原理,以及它和其他锁机制的比......
  • 安全运营之Zeek开源网络流量分析工具安装部署
    一、zeek简要介绍    Zeek官方网站为https://zeek.org/,官网将其定义为一款开源的网络安全流量分析工具,其前身为Bro,在其官方网站可以找到详细的文档说明,zeek可以以单节点部署,也可以以集群的方式部署。Zeek的架构如下:其中有两个关键的组件,EventEngine以及PolicyScriptInter......