网络编程之初识网络

ops/2024/12/16 21:48:54/

1.IP地址

IP地址实际上全称是(互联网协议地址),是每一台计算机在网络上面的编号,每个连接Internet 的设备(如计算机、路由器、服务器等)都被分配一个唯一的 IP 地址,简单来说,IP地址用于定位主机的网络地址

IP作用:

用于在 Internet 上的数据通信中确定发送和接收数据的设备。当你在浏览网页、发送电子邮件、下载文件或进行其他网络活动时,你的设备和其他设备之间的通信都需要使用 IP 地址来定位和识别彼此。就像发送快递一样,需要同时知道发件人的地址和收件人的地址。

IPV6和IPV4:

IPV6和IPV4是当前网络中最重要的两个IP地址版本,IPV4由32位二进制数表示,主要以点分十进制表示如10.184.185.12,IPv6 地址由 128 位二进制数表示。IPV6实际上是为了解决IPV4快要枯竭的问题。

2.端口号

端口号是计算机网络中某个程序的入口,比如通过我的IP地址找到我的计算机位置,但是要找到比如我的idea启动的Tomcat时候使用的是8080端口号。在TCP/IP协议中,端口号是一个16位的数字,范围从0到65535。简单说,端口号用于定位主机中的进程

我们的IP用来定位主机,然而主机上面有很多进程都在使用网络,这时候就要用端口号定位进程

类似发送快递时,不光需要收获地址(IP地址),还需要指定收件人(端口号)。

对于一次网络通信的过程中,涉及到的 IP 和 端口,其实各有两个:

  • 收件人地址 => 目的IP
  • 收件人名字 => 目的端口
  • 发件人地址 => 源IP
  • 发件人名字 => 源端口

3.协议

网络传输过程常常需要双方之间遵守某种协议,用于在不同设备之间传输数据和进行通信的规则和约定,定义了传输格式,传输方式等方法。

4.五元组

在TCP/IP中可以用五元组来标识一个网络通信:

  1. 源IP:用来表示发送信息主机在网络中的位置。
  2. 源端口号:表示发送信息的主机里的应用程序在网络中的位置。
  3. 目的IP:用来表示接受信息主机在网络中的位置。
  4. 目的端口号:表示接受信息的主机里的应用程序在网络中的位置。
  5. 协议号:表示双方发送信息的格式。

打开cmd输入netstat -ano可以看到五元组的相关信息,最后一个PID就是进程号

5.协议分层  

网络通信中,由于协议中很复杂所以在网络通信中要约定好很多内容,所以导致协议很复杂。

我们通常把功能定位相似的协议放在同一层,只有隔壁层能够相互沟通,不能说第一层沟通第三层这种的,这样做是为了让一个复杂的协议变得相对简单。

  1. 上层协议只要了解下层协议,其他协议无需了解,(就比如我们打电话无需了解电话中的原理,只要了解接电话的对方讲的是汉语。)

  2. 某一层协议进行修改等,其他协议无需替换(我们打电话对方开始讲英语了,我们也要讲英语,但是还是无需了解电话机中通信原理)。

1.OSI模型

OSI模型是将网络通信划分为7个不同的层次,每个层次负责不同的功能,但是数据通过七个层级进行逐层传递。

OSI的七个模型

  • 物理层:就好似我们平时的电线,网线等等物理层面的传输介质。
  • 数据链路层:负责相邻节点之间的数据数据传输。
  • 网络层:负责在不同的网络之间进行数据转发,实现数据传输。
  • 传输层:负责两个起点和终点的之间数据传输,提供可靠的数据传输服务,如 TCP 和 UDP。
  • 会话层:负责建立,管理和终止会话。
  • 表示层:负责数据的格式转换和编码,确保不同系统间数据的兼容性。
  • 应用层:提供用户与网络服务之间的接口,包括各种应用程序和协议,如 HTTP、FTP、SMTP 等。

OSI模型复杂又不实用,所以OSI模型没有落地,实际设计网络的时候是以TCP/IP模型来实现的。


2.TCP/IP五层模型

  • 应用层:程序拿到数据之后要进行做什么,解决什么问题,就像比如商家接到订单,要交给快递公司。
  • 传输层:关注网络数据包的起点和终点。
  • 网络层:关注起点终点之间要走哪一条路,(快递公司进行路线规划,比如上海 => 南京 => 石家庄 => 北京)。
  • 数据链路层:负责相邻两个节点的运输,(比如上海到南京,铁路运输;南京到石家庄,飞机空运;石家庄到北京,货车运输)
  • 物理层:通信过程中的基础设施。(公路,铁路,航线等)

而如果算四层模型,则不算物理层,因为物理层是纯硬件,考虑的比较少。


3.网络设备所在分层 

  • 对于主机,操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP的下四层。
  • 对于路由器,关注网络层以下的内容,也就是TCP/IP的下三层,也就是路线规划。(工作在网络层)
  • 对于交换机,他只关注两点之间的传输方式。(工作在数据链路层)。

现在随着技.术的发展实际上路由器和交换机之间的功能也越来越模糊。


6.封装

封装实际上就是把一个协议格式转化成其他不同的协议的过程,在网络通信中数据传输需要经过不同的层次,各个层次对数据的要求也不一样,每一层在数据上添加一些特定的信息(协议头部),就可以到下一层进行处理了。

  • 不同的协议层对数据包有不同的称谓,在传输层中较做段(segment),在网络层中叫做数据报(datagram),在链路层叫做帧(frame)。

如下为数据封装的过程:


http://www.ppmy.cn/ops/142469.html

相关文章

Linux下禁止root远程登录访问

开始讲故事 Long long ago, Linux远程访问方式有telnet、ssh两种协议;有人可能还会说vnc和rdp协议方式,后面这两种主要是可视化桌面场景下的,并非主流。 时过境迁,telnet因安全性低逐渐被禁用淘汰,最后就…

前端报错npm ERR cb() never called问题

环境使用node版本v14.21.3&#xff0c;npm版本6.14.18 1.问题描述 1.1使用npm install后报错 npm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at: npm ERR! ? ? <https://npm.community>npm ERR! A complete log…

scala列表

1 不可变 List 说明 &#xff08;1&#xff09;List 默认为不可变集合 &#xff08;2&#xff09;创建一个 List&#xff08;数据有顺序&#xff0c;可重复&#xff09; &#xff08;3&#xff09;遍历 List &#xff08;4&#xff09;List 增加数据 &#xff08;5&#…

【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列

文章目录 一、跨库方式1&#xff1a;跨库导航二、手动跨库查询三、同服务器&#xff1a;自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器&#xff1a;自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…

BGP-面试

简单介绍一下BGP BGP&#xff0c;边界网关协议&#xff0c;属于路径矢量路由协议。属于触发式更新或者增量更新。具有丰富的路由策略&#xff0c;能够灵活的进行路由选择。重心不是在路由学习&#xff0c;而是路由优选、更高效的传递路由和维护大量的路由信息。基于TCP&#xf…

webrtc学习----前端推流拉流,局域网socket版,一对一

提示&#xff1a;局域网socket版 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 ‌‌‌‌‌WebRTC&#xff08;Web Real-Time Communication&#xff09;‌是一种实时通讯技术&#xff0c;允许网络应用或…

安全防御之备份恢复技术

随着计算机和网络的不断普及&#xff0c;人们更多的通过网络来传递大量信息。在网络环境下&#xff0c;还有各种各样的病毒感染、系统故障、线路故障等&#xff0c;使得数据信息的安全无法得到保障。由于安全风险的动态性&#xff0c;安全不是绝对的&#xff0c;信息系统不可能…

游戏引擎学习第41天

这一节就讨论了一些数学知识 讨论为什么要进行数学讨论 现在到了需要真正开始讨论数学的时候了&#xff0c;因为从这一步开始&#xff0c;几乎所有计划做的事情都将涉及比基本代数更复杂的数学内容。到目前为止所做的一切基本都可以用基础代数技能理解&#xff0c;但从现在开…