给俺的女神翠花发邮件告白,我学会了这些网络基础知识

       每当我们拿起手机,打开微信和某一个小姐姐聊天的时候。我们总会用到一个看不见也摸不到的东西,它就是网络。如果没有网络,就不知道女神的邮箱是多少,更发不了邮件了!为了能让翠花知道我的心意,和翠花更近一步我决定要学习网络的知识。
       Internet实际上是冷战的产物,早在1968年6月DARPA提出了“资源共享计算机网络”,目的就是让DARPA的所有电脑都互联起来,这个网络就叫做ARPnet,即“阿帕网”,是最早的Internet的雏形。但是这种网络协议不能互联不同计算机和不同类型的操作系统,没有纠错功能。在1974年12月Robert Kahn和Vinton Cerf正式发表了一份TCP协议的详细说明,在1983年停止使用NCP,互联网上的主机全部使用TCP/IP。
往期推荐:
       Linux下并发程序设计(4)——System V进程间通信
       史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第1张图片

文章目录

    • 网络的体系结构
      • OSI七层网络协议
      • TCP/IP四层协议
      • 数据封装的过程
      • TCP/IP与OSI的比较
    • 网络的预备知识
      • Socket
      • IP地址
      • DNS协议
      • 端口号
      • 网关
      • 字节序

网络的体系结构

       为了实现不同的计算机生产厂家生产的计算机能够互相通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的,每层向上层提供服务,同时使用下层提供的服务。网络层级结构指的是网络层次的结构和每层所使用协议的集合,OSI和TCP/IP是两类非常重要的体系结构。
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第2张图片

  • OSI模型相关的协议已经很少使用,但是模型本身非常通用
  • OSI是一个理想化的模型,尚未有完整的实现
  • OSI模型共有七层,(上三是高层,下四层是低层)
  • OSI七层模型的上三层对应TCP/IP的应用层,主要包括Tlent、FTP、HTTP、DNS等
  • 对于OSI七层模型来说,上三层属于高层,下三层属于底层
  • 传输层主要包括的是TCP和UDP协议,主要是数据包应该交给那个任务来处理
  • 网络层包括IP、ICMP和IGMP,实现端到端的夸计算机夸操作系统的信息传输
  • 网络接口与物理层主要包括(以太网、令牌环网、FDDI等),主要是屏蔽硬件差异

OSI七层网络协议

       TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第3张图片
1)物理层(Physical Layer)

       激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。

2)数据链路层(Data Link Layer)

       数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等

数据链路层重点:

  • 数据链路层为网络层提供可靠的数据传输;
  • 基本数据单位为帧;
  • 主要的协议:以太网协议;
  • 两个重要设备名称:网桥和交换机。

3)网络层(Network Layer)

       网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。

       网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。

网络层重点:

  • 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;

  • 基本数据单位为IP数据报;

  • 包含的主要协议

    • IP协议(Internet Protocol,因特网互联协议),IPV4和IPV6
    • ICMP协议(Internet Control Message Protocol,因特网控制报文协议)ping命令就属于ICMP协议
    • ARP协议(Address Resolution Protocol,地址解析协议)
    • RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)

4)传输层(Transport Layer)

       第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。

传输层的重点:

  • 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

  • 包含的主要协议:

    • TCP: (Transfer Control protocol,传输控制协议)提供面相链接的,一对一的可靠数据传输,即数据无误、数据无丢失、数据无失序、数据无重复到达的通信
    • UDP: (User datagram Protocol),用户数据协议,无连接的传输协议。不可靠的无线连接传输协议,发送数据之前不需要进行连接所以可以进行高效率的传输
  • 重要设备:网关。

5)会话层

       会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

6)表示层

       表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

7)应用层

       为操作系统或网络应用程序提供访问网络服务的接口。

会话层、表示层和应用层重点:

  • 数据传输基本单位为报文;
  • 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

       可能纯文字的方式不是特别好理解,那个就借鉴我给我梦寐以求的女神(翠花)发邮件的生活实例来帮助理解OSI七层模型每层的作用吧!
       马上就要七夕节了,我想着是不是得和我的翠花女神表示一下我的心意啊。于是乎,我打开了浏览器输入email.163.com输入账户密码登录个人账户(应用层)。但是准备写邮件时,发现不知道写什么好,直接写我嘻哈你可以做我的女朋友吗?,这样显得太直男了吧!当然不行,为了表达出我对翠花的爱慕之心,又不那么直接我决定精心制作一个图片和制作一段视频作为邮件内容。
       当写完邮件后邮件会从应用层到表示层,将图片的jpg格式文件和视频的mp4格式文件翻译成1010的二进制形式(如果有压缩、加密也是在这一层)再传递给会话层,会话层会进行判断发送的内容是不是所需要传递的内容,如果是要传输的内容就传递给传输层,如果不是就存放在硬盘中。传递给传输层以后传输层就确定端口号(包括发送端口和原端口)和相关的协议,发现这是一个邮件,那个邮件的端口号就是TCP协议,随后写入端口号和TCP协议再传输给网络层,网络层负责把发送人的ip和收件人的ip都写入数据。网络层写入数据以后传输给数据链路层,数据链路层负责写入原mac地址和目标mac地址,虽然ip是在负责在互联网传递,但是数据依旧得在局域网进行传输,通过一个局域网跳到另外一个局域网,再跳到另一个局域网,最终到达,当这些工作都完成以后就可以投入互联网进行传输了。
       当投入传输以后,到达目标的地址后(数据链路层),发现这里有一封邮件是我们的(网络层),再通过它的ip地址找到更加具体的地址(XX县XX镇XX村)(传输层),再发现收件人是翠花(会话层),翠花接收到邮件以后兴奋的打开,发现是精心制作的一张图片和一段视频(表示层)。翠花看到后感动的都哭了,随后就直接微信给说哭哭啼啼的说你怎么现在才说嘻哈我啊,你知道我等你这句等了多久吗?就这样我和翠花走在了一起。

TCP/IP四层协议

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第4张图片
       OSI七层模型只是提出的一个理想化模型,在实际应用中常用的是TCP/IP四层模型,而不是OSI七层模型。

  • 网络接口层:
           网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上, TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议( ARP )工作在此层,即OSI参考模型的数据链路层。
  • 网际互联层
           网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)、互联网组管理协议( IGMP )和互联网控制报文协议( ICMP )。
  • 传输层
           传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议( TCP )和用户数据报协议( UDP)。
    给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第5张图片

       上图就是TCP/IP的三次握手,通过发送三次信息来确保信息的传输的正确性,但是为什么只发送三次呢,为什么不发送5次或者更多次数呢?这个就是著名的两军问题。

       一支红色部队在山谷里扎营,在周围的两边山坡上驻扎着蓝色部队。红色部队比两支蓝色部队中的任意一支都要强大,但两支蓝色部队加在一起起就要比红色部队强大。如果一支蓝色部队单独作战,那么它就会被红色部队击败;如果两支蓝色部队同时进攻,他们将能够把红色部队击败。两支蓝色部队需要同步他们的进攻,但他们惟一的通信媒介是步行进入山谷,在那里他们可能被俘虏,从而将信息丢失(换言之,他们必须使用非可靠的通信信道) 。问题是,是否存在一个协议,能够使得蓝色部队取胜?
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第6张图片
       TCP协议可能也会出现类似的问题,但是发送一次回应一次再发送一次就应该非常可靠了。

  • 应用层
           应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务例如: FTP、Telnet、 DNS、SMTP等。

数据封装的过程

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第7张图片

       用户通过文件服务器上传一个文件,数据一旦捡接就上传数据到应用层,发现这是一个文件,就打入一个FTP的包头,接下来数据传输到传输层。传输层就打入传输层的包头,记录发送端口和接收端口,然后数据传入网络层写入IP包头,要写入原IP和目标IP。写完后传输到数据链路层,写入原mac地址和目标mac地址。写完后传入网线向对方传递,这个传递过程就是和刚才的过程相反最后客户使用FTP的客户端就可以读取到相关的数据。

TCP/IP与OSI的比较

  • 共同点
    • OSI参考模型和TCP/IP参考模型都采用了层次结构的概念
    • 都能够提供面向连接和无连接两种通信服务机制
  • 不同点
    • 前者是七层模型,后者是四层结构
    • 对可靠性要求不同(后者更高)
    • OSI模型是在协议开发前设计的,具有通用性.TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络

网络的预备知识

Socket

  • Socket是一种编程接口,是一种特殊的文件描述符
  • 不仅限于TCP/IP协议
  • 面向连接(Transmission Control Protocol -TCP/IP)、无连接(User Datagram Protocol -UDP和Inter - network Packet Exchangge -IPX)
  • 代表着网络中的一种资源
Socket的分类:
  • 流式套接字(SOCK_STREAM):唯一对应着TCP
    • 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。
  • 数据报套接字(SOCK_DGRAM):唯一对应这UDP
    • 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。
  • 原始套接字(SOCK ,RAW): (对应着多个协议, 发送穿透了传输层)
    • 可以对较低层次协议如IP、ICMP直接访问。

IP地址

  • IP地址是Internet中主机的唯一标识
    • Internet中的主机要与别的机器通信必须具有一个IP地址
    • IP地址为32位(IPV4)和128位(IPV6)
    • 每个数据包必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由
    • 范围为0.0.0.0255.255.255.255

表示形式:常用点分形式,如202.38.64.10,最后都会转化为一个32位的无符号整数

IP包头:

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第8张图片
       注意:字段后面括号中的数字是指该字段在IP数据包头部信息中所占的位数(bit)IPV4的包头不一定是20个字节,因为有一些可选项。同时,这也是IPV4比IPV6传输速度慢的原因。

IP地址的分类:
网络类别 最大网络数 IP地址范围 最大主机数 私有IP地址范围
A 126(2^7-2) 1.0.0.0—126.255.255.255 2^24-2 10.0.0.0—10.255.255.255
B 16384(2^14) 128.0.0.0—191.255.255.255 2^16-2 172.16.0.0—172.31.255.255
C 2097152(2^21) 192.0.0.0—223.255.255.255 2^8-2 192.168.0.0—192.168.255.255

注意

  • A类中:1.255.255.255代表当前网络的广播地址,1.0.0.0代表网络本身也不能被分配
  • B类中:192.224和192.254不是同一个网络,但是192.255.2和192.255.4是同一个网段
  • C类中:前3个数代表不同网段,后一个数代表相同网段的不同主机
  • 公网IP都需要掏钱(只有2^32个),私有(内网)IP是任何人都可以使用的,但是私有IP不能直接访问公网

DNS协议

       DNS是域名解析协议,DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。这也是DNS的官方说法。说白了就是:在互联网中通过IP 地址来进行通信。但是IP 地址的表示形式是数字,很难进行记忆(比如116.213.120.232),所以为每个 IP取一个人类更易记忆的域名形式(比如www.google.com),而通过DNS 来把解析域名成为 IP(将方便人理解的命名格式解析成计算机能够理解的格式,也可以将IP 翻译成域名)。
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第9张图片

DNS的作用
  • 客户机向DNS服务器发
    • 送域名查询请求
    • DNS服务器告知客户机
    • Web服务器的IP地址
    • 客户机与Web服务器通信
域名空间结构

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第10张图片
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第11张图片
注意:域名是全球唯一的;互联网中域名是有结构有规划的;域名是分级的,在进行域名和IP地址解析时才能更容易找到。

DNS查询过程

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第12张图片
从查询方式上分

  • 递归查询
           要么做出查询成功响应,要么作出查询失败的响应。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机

  • 迭代查询
           服务器收到一次迭代查询回复一次结果 ,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。

从查询内容上分

  • 正向查询由域名查找IP地址
  • 反向查询由IP地址查找域名

端口号

       为了区分一台主机接收到的数据包应该交给那个任务来出处理,采用端口号来进行区分。端口号是一个16位的数字(1~65535),端口号由IANA(Iternet Assigned Numbers Authority)管理,通常分为众所周知端口:1~1023 (1 ~ 255之间为众所周知端口,256 ~1023端口为UNIX系统占用);注册端口:1024 ~ 49105;动态或私有端口:49151 ~ 65535。同时,TCP端口号与UDP端口号相互独立

TCP协议包头

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第13张图片

UDP协议包头

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第14张图片

常见的端口协议
协议名 端口号
FTP(文件传输协议) 20 / 21
SSH(安全shell协议) 22
telent(远程登录协议) 23
DNS(域名系统) 53
http(超文本传输协议) 80
SMTF(简单邮件传输协议) 25
POP3(邮局协议3代) 110
查看本机启用的端口
netstat -an
选项:
	-a : 查看所有连接和监听端口
	-n : 显示IP地址和端口号,而不显示域名和服务名

网关

  • 网关(Gateway)又称网间连接器、协议转换器。
  • 网关在网络层以上实现网络互连,是最复杂的网络互连设备仅用于两个高层协议不同的网络互连。
  • 网关既可以用于广域网互连,也可以用于局域网互连。
  • 网关是一种充当转换重任的服务器或路由器。

给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第15张图片

网关的作用:

       1、网关在所有内网计算机访问的不是本网段的数据报时使用。

       2、网关负责将内网IP转换为公网IP,公网IP转换为内网IP。

       我已经注意了我们班的一个漂亮妹妹好好久了,我想着有机会了给她告白。由于是同班同学互相认识就不需要老师(网关)来引荐,直接把信息传递给她就可以了,但是她嫌弃我身高没有一米八拒绝了我的表白。没过几天我又看上了隔壁班的一个漂亮妹妹二,但是又不能直接跑到隔壁班把信给漂亮妹妹二,因为怕我怕被他们班对那个漂亮妹妹有意思的男生们暴打一顿。于是乎我找到了班主任,让班主任(网关)帮我传递消息给隔壁班的班主任(负责把外网IP翻译成内网IP)然后交给交换机,最终把信(数据)交给隔壁班的漂亮妹妹。
       但是隔壁班的妹妹又嫌弃我技术不够厉害,敲代码速度太慢,就这样也把我给拒绝了。看来我的眼光不能只局限于此,隔壁学校的姑娘多男孩还少,我只能对隔壁学校的姑娘下手了。终于,我发现了隔壁学校的翠花姑娘。但是,我又不能直接联系翠花,班主任说隔壁学校的姑娘他也没有办法,但是班主任说可以找找校长,就凭借他和校长之间的关系让校长棒棒忙联系一下应该是完全没有问题的。班主任拿着我的情书交给校长,给校长苦口婆心和说了一番,校长最终终于应下了。校长把信交给了隔壁学校的老师,让那个隔壁学校的老师把信交给翠花。
       隔壁学校的翠花收到了我的信以后,并没有明确表达她的意思。我为了追到她,想尽各种方法约出来一起玩,一起吃饭、一起看电影。我和她现在的状态正处于暧昧期,我想着这个时候告白的话一定会成功,但是学校突然宣布封闭式管理,我的线下表白计划失败了。我只能通过线上发邮件的方式来给翠花告白了。

       上面的这一个小故事可能编写的不是特别好,但是很形象的比喻了网关的作用。通过不同的网关(故事中的班主任、校长、老师就相当于网关)进行数据传递,我的信息才能从一个网络传递到下一个网络,再传到下一个网络最终到达目的地。

字节序

  • 不同类型CPV的主机中, 内存存储多字节整数序列有两种方法,称为全机学节序(HBO) :
    • 小端序(little-endian) ——低序字节存储在低地址
      将低字节在储车起始地址,称为"Little-Endian"字节序,Intel、 AMD等
      采用的是这种方式:
  • 大端序(big-endian) -高序字节存储在低地址
    将高字节存储在起始地址,称为“Big-Endian"字节序, 由ARM、Motorola等所采用
  • 网络中传输的数据必须按网络字节序,即大端字节序
  • 在太部分PC上,当应用进程将整数送入socket前,需要转化成网络字节序;当应用进程从socket取出整数后,要转化成小端字节序

关于字节序这篇文章写得很详细理解字节序 大端字节序和小端字节序,想加深理解的可以看这篇文章。

       不积小流无以成江河,不积跬步无以至千里。而我想要成为万里羊,就必须坚持学习来获取更多知识,用知识来改变命运,用博客见证成长,用行动证明我在努力。
       如果我的博客对你有帮助、如果你喜欢我的博客内容,记得“点赞” “评论” “收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
给俺的女神翠花发邮件告白,我学会了这些网络基础知识_第16张图片

你可能感兴趣的:(Linux,#,Linux网络编程,网络,网络通信,网络协议,ssh,服务器)