UNIX再学习 -- 网络与网络协议

一、网络协议模型

1、ISO/OSI 网络协议模型

什么是计算机网路?

计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

什么是网络协议?

网络协议是一种特殊的软件,是计算机网络实现其功能的最基本的机制。网络协议的本质就是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其它所有的软件甚至硬件系统中,因此可以说协议在网络中无所不在。

什么是协议栈?

为了减少网络设计的复杂性,绝大多数网络采用分层设计的方法。所谓分层设计,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。各层的协议和接口统称为协议栈。

什么是 ISO/OSI 网络协议模型?

描述计算机网络各协议层的一般方法是采用国际标准化组织(International Standardization Organization,ISO)的计算机通信开放系统互连(Open System Interconnection,OSI)模型,简称 ISO/OSI 网络协议模型。

2、TCP/IP 协议族

TCP/IP 不是个单一的网络协议,而是由一组具有层次关系的网络协议组成的协议家族,简称 TCP/IP 协议族。

— TCP:传输控制协议,面向连接,可靠的全双工的字节流。
— UDP:用户数据报协议,无连接,不如 TCP 可靠但速度快。
— ICMP:网际控制消息协议,处理路由器和主机间的错误和控制消息。
— IGMP:网际组管理协议,用于多播。
— IPv4:网际协议版本 4,使用 32 位地址,为 TCP、UDP、ICMP 和 IGMP 提供递送分组服务。
— IPv6:网际协议版本 6,使用 128 位地址,为 TCP、UDP 和 ICMPv6 提供递送分组服务。
— ARP:地址解析协议,把 IPv4 地址映射到硬件地址。
— RARP:逆地址解析协议,把硬件地址映射到 IPv4 地址。
— ICMPv6:网际控制消息协议版本 6,总和了 ICMP、IGMP 和 ARP 的功能。
— BPF:BSD 分组过滤器,为应用程序提供访问数据链路层的接口,由源自 BSD 的系统内核提供。
— DLPI:数据链路提供者接口,为应用程序提供访问数据链路层的接口,由源自 SVR4 的系统内核提供。

通常所说的 TCP、UDP 和 ICMP 等协议都是工作在 IP 协议之上的,IP 协议作为它们的基础协议为其提供服务支撑。

3、TCP/IP 与 ISO/OSI 模型

在 ISO/OSI 网络协议模型的基础上,TCP/IP 协议做了部分合并和简化,同时将网络编程的接口设定在传输层与会话层之间,这样做的理由有两点。
第一、上三层与应用程序的业务逻辑(如数据包的组织与解析、收发的实际与次序等)密切相关,而与具体的通信细节(如收发分组、计算验证校验和、丢包重传等)关系不大;下四层主要处理通信细节而与具体应用的业务逻辑无关。
第二、上三层通常构成用户进程,而下四层通常是系统内核的一部分。

二、消息与地址

1、消息包与消息流

应用程序负责组织的通常都是业务相关的数据内容,而要想把这些数据内容通过网络发送出去,就要将其自上向下地压入协议栈,每经历一个协议层,就会对数据做一层封包,每一层输出的封包都是下一层输入的内容,消息包沿着协议栈的运动形成了消息流。
当从网络上接收数据时,过程刚好相反,消息包自下向上地流经协议栈,每经历一个协议层,就会对输入的数据解一层封包,经过层层解包以后,应用程序最终得到的将只是与业务相关的数据内容。

2、IP 地址

什么是 IP 地址?

IP 地址,全称网际协议地址(Internet Protocol Address),是 IP 协议提供的一种统一的地址格式,为互联网上的每个网络和每台主机分配一个逻辑地址,借以消除物理地址差异所带来的影响。

IP地址如何表示?

在计算机内部,IP 地址用一个 32 位无符号整数表示,如:0x01020304。如无特别说明,我们只讨论 IPv4 的情况。
人们更习惯使用点分十进制字符串表示,如:1.2.3.4。字符串形式的从左到右,对应整数形式的从高字节到低字节。注意这里所说的高低指的是数位高低而非地址高低。

查看 IP 地址的基本命令

Windows系统操作系统:ipconfig ipconfig/all
Unix/Linux操作系统:ifconfig /sbin/ifconfig

什么是 IP 地址分级?

— A 级地址:以 0 为首的 8 位网络地址 +24 位本地地址
— B 级地址:以 10 为首的 16 位网络地址 +16 位本地地址
— C 级地址:以110 为首的 24 位网络地址 +8 位本地地址
— D 级地址:以 1110 为首的 32 位多播地址
例如:某台计算机的 IP 地址:192.168.182.48,写成整数形式:11000000 10101000 10110110 00110000
C 级地址,网络地址:192.168.182.0,本地地址:48.

什么是子网掩码?

一般与IP地址搭配使用,主要用于指定一个IP地址中具体的网络地址和主机地址。也就是说判断两个IP地址是否在同一个子网中。
IP 地址 & 子网掩码 = 网络地址
192.168.182.48 & 255。255.255.0 = 192.168.182.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b
history显示历史指令记录内容,下达历史纪录中的指令主要的使用方法如果你想禁用history,可以将HISTSIZE设置为0:#exportHISTSIZE=0使用HISTIGNORE忽略历史中的特定命令下面的例子,将忽略pwd、ls、ls-ltr等命令:#exportHISTIGNORE=”pwd:ls:ls-ltr:”使用HIS
一.命令历史  1.history环境变量:    HISTSIZE:输出的命令历史条数,如history的记录数    HISTFILESIZE:~/.bash_history保存的命令历史记录数    HISTFILLE:历史记录的文件路径    HISTCONTROL:     ignorespace:忽略以空格开头的命令
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的she
BashOne-LinersExplained,PartI:Workingwithfileshttps://catonmat.net/bash-one-liners-explained-part-oneBashOne-LinersExplained,PartII:Workingwithstringshttps://catonmat.net/bash-one-liners-explained-part-twoBashOne-LinersExplained,PartII
Shell中变量的作用域:在当前Shell会话中使用,全局变量。在函数内部使用,局部变量。可以在其他Shell会话中使用,环境变量。局部变量:默认情况下函数内的变量也是全局变量#!/bin/bashfunctionfunc(){a=99}funcecho$a输出>>99为了让全局变量变成局部变量
1、多命令顺序执行;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系&&  命令1&&命令2  逻辑与,当命令1正确执行,才会执行命令2||  命令1||命令2  逻辑或,当命令1执行不正确,才会执行命令2例如:ls;date;cd/home/lsx;pwd;who ddif=输入文件of=输
原博文使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"。Linux执行文件时发现这个格式,会把!后的内容提取出来拼接在脚本文件或路径之前,当作实际执行的命令。 Shebang这个符号通常在Unix系统的脚本
1、历史命令history[选项][历史命令保存文件]选项:-c:  清空历史命令-w:  把缓存中的历史命令写入历史命令保存文件 ~/.bash_historyvim/etc/profile中的Histsize可改存储历史命令数量历史命令的调用使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史
目录1.Shell脚本规范2.Shell脚本执行3.Shell脚本变量3.1环境变量3.1.1自定义环境变量3.1.2显示与取消环境变量3.1.3环境变量初始化与对应文件的生效顺序3.2普通变量3.2.1定义本地变量3.2.2shell调用变量3.2.3grep调用变量3.2.4awk调用变量3.3
   http://www.voidcn.com/blog/wszzdanm/article/p-6145895.html命令功能:显示登录用户的信息命令格式:常用选项:举例:w显示已经登录的用户及正在进行的操作[root@localhost~]#w 11:22:01up4days,21:22, 3users, loadaverage:0.00,0.00,0.00USER