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

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

网络的体系结构

       为了实现不一样的计算机生产厂家生产的计算机可以互相通讯,以便在更大的范围内创建计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。网络采用分而治之的方法设计,将网络的功能划分为不一样的模块,以分层的形式有机组合在一块儿。每层实现不一样的功能,其内部实现方法对外部其余层次来讲是透明的,每层向上层提供服务,同时使用下层提供的服务。网络层级结构指的是网络层次的结构和每层所使用协议的集合,OSI和TCP/IP是两类很是重要的体系结构。
在这里插入图片描述web

  • 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的四层、五层模型,每一层中都要本身的专属协议,完成本身相应的工做以及与上下层级之间进行沟通。shell

在这里插入图片描述
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四层协议

在这里插入图片描述
       OSI七层模型只是提出的一个理想化模型,在实际应用中经常使用的是TCP/IP四层模型,而不是OSI七层模型。

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

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

       一支红色部队在山谷里扎营,在周围的两边山坡上驻扎着蓝色部队。红色部队比两支蓝色部队中的任意一支都要强大,但两支蓝色部队加在一块儿起就要比红色部队强大。若是一支蓝色部队单独做战,那么它就会被红色部队击败;若是两支蓝色部队同时进攻,他们将可以把红色部队击败。两支蓝色部队须要同步他们的进攻,但他们唯一的通讯媒介是步行进入山谷,在那里他们可能被俘虏,从而将信息丢失(换言之,他们必须使用非可靠的通讯信道) 。问题是,是否存在一个协议,可以使得蓝色部队取胜?
在这里插入图片描述
       TCP协议可能也会出现相似的问题,可是发送一次回应一次再发送一次就应该很是可靠了。

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

数据封装的过程

在这里插入图片描述

       用户经过文件服务器上传一个文件,数据一旦捡接就上传数据到应用层,发现这是一个文件,就打入一个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包头:

在这里插入图片描述
       注意:字段后面括号中的数字是指该字段在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 翻译成域名)。
在这里插入图片描述

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

在这里插入图片描述
Alt
注意:域名是全球惟一的;互联网中域名是有结构有规划的;域名是分级的,在进行域名和IP地址解析时才能更容易找到。

DNS查询过程

在这里插入图片描述
从查询方式上分

  • 递归查询
           要么作出查询成功响应,要么做出查询失败的响应。通常客户机和服务器之间属递归查询,即当客户机向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协议包头

在这里插入图片描述

UDP协议包头

在这里插入图片描述

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

网关

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

在这里插入图片描述

网关的做用:

       一、网关在全部内网计算机访问的不是本网段的数据报时使用。

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

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

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

字节序

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

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

       不积小流无以成江河,不积跬步无以致千里。而我想要成为万里羊,就必须坚持学习来获取更多知识,用知识来改变命运,用博客见证成长,用行动证实我在努力。
       若是个人博客对你有帮助、若是你喜欢个人博客内容,记得“点赞” “评论” “收藏”一键三连哦!据说点赞的人运气不会太差,每一天都会元气满满呦!若是实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
在这里插入图片描述