计算机基础--网络

互联网协议

互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

互联网协议按照功能不同分为osi七层或者tcp/ip五层或tcp/ip四层

互联网协议根据功能不同的划分

每层常见物理设备

每层常见物理设备

因为学习python编程只需要了解tcp/ip五层模型,所以我们只需要了解应、传、网、数、物这五层模型的主要协议,就理解了整个互联网通信的原理。

每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件

物理层:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

数据链路层:根据以太网协议(ethernet)定义了电信号的分组方式(ethernet)

网络层:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址(arp)

传输层:建立端口到端口的通信(tcp、udp)  PS:端口范围0-65535,0-1023为系统占用端口

应用层:规定应用程序的数据格式。(http、ftp等)

 

TCP三次握手四次挥手

tcp三次挥手四次握手

 

网络通信实现

想实现网络通信,每台主机需具备四要素

    • 本机的IP地址
    • 子网掩码
    • 网关的IP地址
    • DNS的IP地址

获取这四要素分两种方式

1.静态获取

即手动配置

2.动态获取

通过dhcp获取

以太网头ip头udp头dhcp数据包

 

(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服务器等等参数

转载于:https://www.cnblogs.com/8192bit/p/7196356.html

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

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

相关文章

万字详解数据库连接池

数据库连接池的概念 数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连…

Win Linux 双系统安装指南

双系统安装指南 环境说明 硬件:一块240G NVMe,一块240G SSD,一块2T的HDD。 系统:Linux Mint 18.2,Windows 10 Enterprise Version 1703 Update June 2017 分配:由于工作原因,我的主系统为Linux …

JDBC自定义框架

自定义JDBC框架: 定义必要的信息、获取数据库的连接、释放资源都是重复的代码,在操作JDBC时通常都是执行SQL语句就可以了,所以需要抽取出来一个模板类来封装一些方法(Update、Query),专门执行增删改查的SQL…

SpingMVC 执行的流程

一:SpringMVC的开发步骤 ①:在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求。 由于Web应用是基于请求/响应结构的应用,所以不管哪个MVC Web框架,都需要在web.xml中配置该框架的核心Servlet或Filter,这…

UI 07 _ 导航视图控制器 与 属性传值

首先, 先创建三个VC. 完毕点击按钮, 进入下一页, 并可以返回. 要先把导航视图控制器创建出来. 在AppDelegate.m 文件里代码例如以下: #import "AppDelegate.h" #import "MainViewController.h" interface AppDelegate () endimplementation AppDelegate …

el表达式具体解释

引用内容百度百科(http://baike.baidu.com/view/1488964.htm) 參考百度百科,然后自己又加入了一部分自己感觉实用的东西,整理一下希望对大家有所帮助!E L(Expression Language) 目的:为了使JSP写起来更加简…

MyBatis接口代理

MyBatis接口代理: 采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是目前的主流方式。Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis 框架根据接口定义创建接口的动态代理对象&a…

编译OSG的FreeType插件时注意的问题

使用自己编译的freetype.lib,在编译osgdb_freetype插件项目时,报错LINK错误,找不到png的一堆函数 最简单的方式是不要使用PNG编译freetype。记住不要犯贱。 转载于:https://www.cnblogs.com/coolbear/p/7205906.html

openresty总结

协程 1.例如当获取的数据没有前后依赖关系时,可以使用ngx.thread.spawn和ngx.thread.wait同时从数据库不同的库、表或者不同来源(mysql,redis等)获取数据。https://github.com/openresty/lua-nginx-module#ngxthreadspawnhttps://…

PageHelper分页插件使用

分页插件PageHelper: MyBatis没有分页功能,需要手动编写LIMIT语句,可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据 PageInfo:…

jquery插件开发通用框架

2017-07-24 更新:增加单例模式。 jquery插件开发框架代码: /** 插件编写说明:* 1、插件命名:jquery.[插件名].js,如jquery.plugin.js* 2、对象方法添加到jQuery.fn上,全局方法添加到jQuery对象本身上* 3、插…

Mybatis多表模型

多表模型: 多表模型分类 一对一:在任意一方建立外键,关联对方的主键。一对多:在多的一方建立外键,关联一的一方的主键。多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键…

关于zkfc与zkserver频繁断开的问题

详见http://blog.csdn.net/dslztx/article/details/51596951转载于:https://www.cnblogs.com/roger888/p/7211625.html

高动态范围红外图像压缩

BF&DRC 近期看了一篇高动态范围红外图像压缩的文章,《New technique for the visualization of high dynamic range infrared images》.这篇文章主要利用双边滤波器把宽动态红外图像切割为基本图像和细节图像,再分别对基本图像和细节图像进行处理。对…

Mybatis构建sql语法

构建sql: 之前通过注解开发时,相关 SQL 语句都是自己直接拼写的。一些关键字写起来比较麻烦、而且容易出错。MyBatis 给我们提供了 org.apache.ibatis.jdbc.SQL 功能类,专门用于构建 SQL 语句 常用方法: 查询功能的实现&#xf…

Mqtt协议IOS端移植3

ServerMqFramework.h #import "MqttFramework.h"interface ServerMqFramework : MqttFramework/*** brief 得到模块控制器的句柄单例** param [in] N/A* param [out] N/A* return void* note*/(ServerMqFramework*)getMQttServerFrameInstance;- (int)callBusine…

java第三课,流程控制语句

流程控制语句条件语句:if语句:*if(条件 boolean类型){ true }*if(boolean表达式){true}else{false结果}*多重 if else if(){}else if(){}else *嵌套ifSwitch语句:*switch(表达式){ case…

在cli命令行上显示当前数据库,以及查询表的行头信息

在$HIVE_HOME/conf/hive-site.xml文件下加入以下配置文件 <property><name>hive.cli.print.header</name><value>true</value><description>Whether to print the names of the columns in query output.</description> </proper…

两点之间最短路径:弗洛伊德算法

弗洛伊德算法是计算无向有权图中两点间最短路径的算法&#xff0c;复杂度为O(n^3)。其思路是将两点间距离分为过&#xff08;指定的&#xff09;第三点或是不过&#xff0c;然后取它们的最小值&#xff0c;如此循环就可以得到两点之间真正的最小值。 void floyd() {for (int k …

最常用的JavaScript 事件

JavaScript 事件&#xff1a; 事件指的就是当某些组件执行了某些操作后&#xff0c;会触发某些代码的执行。 更多事件&#xff1a;https://www.w3school.com.cn/jsref/dom_obj_event.asp 常用的事件&#xff1a; 属性触发时机onabort图像加载被中断onblur元素失去焦点onchange…