互联网协议(Internet Protocol Suite)

news2024/9/24 15:28:29

文章目录:

一:从系统角度(解释互联网是如何构成的,协议的设计思想)

二:从用户的角度(解释结构是如何发挥作用,完成网络数据交换的)


参考:阮一峰

一:从系统角度(解释互联网是如何构成的,协议的设计思想

五层模型(也有四层和七层的)

越下面的层,越靠近硬件;越上面的层,越靠近用户:如果理解话从下往上面看,上层的变动完全不涉及下层的结构

    "应用层"(Application Layer):规定应用程序的数据格式。应用程序收到"传输层"的数据,接下来就要进行解读


    "传输层"(Transport Layer):就是建立"端口到端口"的通信
                                 端口(port):一个参数,表示这个数据包到底供哪个程序(进程)使用,就是使用网卡的程序的编号
                                 套接字(socket):确定主机+端口,我们就能实现程序之间的交流
                                 UDP协议:在数据包中加入端口信息,UDP数据包=标头+数据
                                          优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到
                                 TCP协议:有确认机制的UDP协议,每发出一个数据包都要求确认
                                          优点能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源
                                          没有长度限制,理论上可以无限长,通常长度不会超过IP数据包的长度


    "网络层"(Network Layer):建立"主机到主机"的通信
                               网络地址:作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络
                                         网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡
                               IPV4:规定网络地址的协议
                               IP地址:地址分成两个部分,前一部分代表网络,后一部分代表主机
                               子网掩码(subnet mask):判断两台计算机是否属于同一个子网络,就是表示子网络特征的一个参数。它在形式上等同于IP地址
                                                        通过将两个IP地址与子网掩码分别进行AND运算看结果是否相同
                               IP数据包:根据IP协议发送的数据包
                               ARP协议:能够从子网络IP地址得到MAC地址,这里是两台主机在同一个子网络。如果不在同一个子网络交给网关去处理


    "链接层"(Link Layer):确定了0和1的分组方式
                            以太网协议:一组电信号构成一个数据包/"帧"(Frame)分成两个部分标头(Head)+数据(Data)
                                       "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。
                            MAC地址:连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。
                                     网卡的地址,就是数据包的发送地址和接收地址,都是独一无二的地址,可以定位网卡和数据包的路径
                            广播(broadcasting):发送一个数据包,接收者读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,
                                                  如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包


    ”实体层"(Physical Layer):把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号

数据包的结构 

 

发送数据包的条件
      同一个子网络:对方的MAC地址+对方的IP地址
    非同一个子网络:网关的MAC地址+对方的IP地址

二:从用户的角度(解释结构是如何发挥作用,完成网络数据交换的

静态IP地址:本机的IP地址 + 子网掩码 + 网关的IP地址 + DNS的IP地址
动态IP地址:计算机开机后,会自动分配到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议

DHCP协议:应用层协议
          每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"
          新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数

 

 

(1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

(2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

(3)最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。



以太网是广播发送,同一个子网络的每台计算机都收到了这个包。
因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。
当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包
接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。
这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),
UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。
新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

网络数据交换,互联网协议的整个通信过程:从上层到下层

1.设置本机参数  

2.DNS协议

DNS协议:将网址转换成IP地址

3.子网掩码 :判断,这个IP地址是不是在同一个子网络,二进制的AND运算

4.应用层协议:浏览网页用的是HTTP协议

5.TCP协议:需要设置端口

6.IP协议:TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址

7.以太网协议:IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址

8.服务器端响应:经过多个网关的转发,服务器收到了以太网数据包

                            根据IP标头的序号将包进行拼结,取出完整的TCP数据包,然后读出里面的"HTTP请求",接着做出"HTTP响应",再用TCP协议发回来

                            收到HTTP响应以后,就可以将网页显示出来,就完成一次网络通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

过滤器与拦截器的区别

1.运行顺序不同 过滤器是在客户端请求到达服务器,但还未到Servlet时运行的,而拦截器是在到达Servelt后,调用适配器(HandlerAdapter)前运行的。 2.配置方式不同 过滤器是在web.xml中配置,而拦截器是在Spring中的配置文件中配置&a…

mysql练习----单表查询

环境: 目录 第一题 第二题 第三题 第一题 --创建如下学生表 create table student( id int, name varchar(20), gender varchar(20), chinese int, math int, english int ); insert into student values (1,张明,男,89,78,90), (2,李进,男,67,53,95), (3,王…

Liunx下线程互斥与同步

文章目录 前言1.线程相关问题2.加锁操作1.相关接口2.加锁原理 3.线程安全4.线程同步 前言 本文主要围绕Linux下线程互斥问题进行相关讲解,同时也会线程同步相关问题。 1.线程相关问题 我们知道进程地址空间很多资源是被线程共享的。线程在并发访问这些共享资源的时…

代码随想录day11

20. 有效的括号 思路:这里用模拟栈的方法会更好理解,也就是我们每次遇到朝左方向的三种类型的时候,就加入相反方向的右括号到result栈中。由于栈是一个先进后出的方式,所以我们会有一个判断stack当前为不为空,和stack[…

4G理论概述

文章目录 LTE网络基础架构UMTS(通用移动通信系统,Universal Mobile Telecommunications System)UTRAN(UMTS陆地无线接入网,UMTS Terrestrial Radio Access Network)RNC(无线网络控制器&#xff…

Vue的响应式实现思路及源码分析

Vue # 思路 new Vue() 首先执行初始化,对 data 执行响应化处理,这个过程发生在 Observer 中同时对模板执行编译,找到其中动态绑定的数据,从 data 中获取并初始化视图,这个过程发生在 compile 中同时定义一个 更新函数 和 Watcher,将来对应数据变化时 Watcher 会调用 更新…

python编程——字符串讲解

作者:Insist-- 个人主页:insist--个人主页 本文专栏:python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 前言 本文将介绍python字符串是什么?以及它的几…

C++11(一)(列表初始化,变量类型推导(auto,decltype),nullptr,范围for循环等)

目录 C11简介 列表初始化 C98中,{}的初始化问题 内置类型的列表初始化 自定义类型的列表初始化 变量类型推导 auto decltype nullptr 范围for循环 final和override 默认成员函数的控制 显式缺省函数 删除默认函数 C11简介 在2003年C标准委员会曾经提交了一份技…

STM32F767-0-HAL库主从定时器产生固定数量的PWM

STM32F767-0-主从定时器产生固定数量的PWM 前言一、配置STM32F767主从定时器的详细步骤1.1 选择主定时器和从定时器:1.2 配置主定时器(主从模式):1.2.1 设置主定时器的时钟源:1.2.2 配置主定时器的分频系数&#xff1a…

不同路径(力扣)动态规划 JAVA

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例 1&a…

JWT的简单说明与使用

简要 JWT是"JSON Web Token"的缩写,是一种用于在不同系统之间传输信息的开放标准。它通过将信息进行加密后生成一个安全的令牌,以便在网络请求中进行身份验证和授权。 具体来说,JWT可以用于以下几个方面: 身份验证&…

CMakeLists.txt 语法介绍

CMake编译原理 CMake是一种跨平台编译工具,主要编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库.因此CMake的编译基本就两个步骤:cmake && make cm…

MySQL基础练习

Ⅰ Ⅱ 3.1 3.2 3.3 3.4 -- 单表查询练习 /* 素材 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, …

细数那些Compose新手容易犯的错误

作者:晴天小庭 笔者作为一个日常Jetpack Compose开发者,对Compose的理解也在逐渐加深中,最近回顾当初学习和实践的过程中,犯了不少错误和踩了很多坑,本篇文章作为小总结分享给大家,同时文章会持续更新&…

Leetcode-每日一题【1669.合并两个链表】

题目 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你返回结果链表的头指针。 示例 1…

Unity游戏C# dll注入

案例游戏下载 首先在网上下载个游戏案例,我就以Captain Molly游戏为例。 这个游戏玩家默认生命值有5点,咱们通过dll注入修改为10点。 dnSpy 我使用dnSpy来查看Unity游戏生成的dll代码,当然你们也可以使用其他工具。 Unity游戏脚本代码最终…

Codeforces-Round-883-Div-3

Codeforces Round 883 (Div. 3) 链接:https://codeforces.com/contest/1846 A. Rudolph and Cut the Rope There are n n n nails driven into the wall, the i i i-th nail is driven a i a_i ai​ meters above the ground, one end of the b i b_i bi​ m…

Pinia: vue的最新状态管理库

Pinia: vue的最新状态管理库,vuex状态管理工具的替代品。 pinia官方文档 注意defineStore()的返回值还是一个方法,所以useCounterStore是一个方法,执行该方法得到一个对象。 getters: 异步action: storeToRefs: 补充 vuex&#xff…

20中文字符识别(matlab程序)

1.简述 随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕) 包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引和检索非常有帮助…