2016-09-17 22:14:55 zzuchengming 阅读数 1979
  • linux实战视频课程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机

    249 人正在学习 去看看 刘英杰

转载地址:https://my.oschina.net/u/1378445/blog/285939

五层模型主要是结合了osi的七层和tcp/ip的四层得出,主要是物理层、数据链路层、网络层、传输层、应用层五层,下层向上层提供服务,上层向下层提供接口。作为一个iOS开发者接触比较多的就是上面两层,所以本文也主要介绍上面两层。


传输单位

    先讲一讲各层的传输单位,应用层是报文(message),报文在发送之前一般会划分成为等长的数据段,在每段前面加上一些必要的控制信息组成的首部后,就构成了一个分组(packet),也叫做包,首部也可叫包头。无论在哪一层传送的数据单元,习惯上都可以笼统地用分组来表示。

    传输层主要使用TCP和UDP,如果使用TCP的话,单位是报文段(segment),UDP的单位是用户数据报。在发送数据时,网络层把传输层产生的报文段或者用户数据报封装成分组或包进行传送,由于网络层使用IP协议,分组也叫做IP数据报,简称数据报。 数据链路层将网络层交下来的IP数据报组装成帧(framing),物理层单位是比特,就是0和1。


中间设备

    从一般的概念讲,讲网络互联起来要使用一些中间设备,物理层使用的中间设备叫做转发器(repeater),数据链路层使用的中间设备叫做网桥或桥接器(bridge),网络层使用的中间设备叫做路由器(router),网络层以上使用的中间设备叫做网关(gateway)。

物理层

     接下来简单介绍一下物理层,首先需要明白的是物理层不是指具体的物理设备或者信号传输的物理媒体,而是指在物理媒体之上为上一层(链路层)提供一个传输原始比特流的物理连接。这一层实现的硬件是集线器(hub),它对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

      

数据链路层

    数据链路层协议有许多种,但是有三个基本问题则是共同的,这三个问题就是:封装成帧、透明传输、差错检测。关于差错控制,比特在传输过程中可能0变1,1变0,这叫做比特差错,数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)。数据链路层使用两种信道:点对点信道和广播信道,点对点协议PPP(point-to-point protocol)则是点对点信道常用的协议,也是该层最广泛的协议,工作在该层的硬件是网桥。

网络层

    第三层是网络层,网络层向上层提供的是无连接的数据报服务,数据报服务的可靠通信应该由用户主机来保证、连接的建立可以不需要、每个分组都有终点的完整地址、分组独立选择路由进行转发,当结点出故障时,故障结点可能会丢失分组,一些路由可能会发生改变,到达终点不一定按发送顺序,端到端的差错控制和流量控制由用户主机负责。网络层不提供服务质量的承诺,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。如果主机中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等),IP协议是该层的核心协议,IP协议的主要功能就是无连接的数据报传输、数据报路由选择和差错控制。



传输层

    第四层是传输层,它属于面向通信的最高层,同时也是用户功能中的最底层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。网络层是为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。端口是应用层各协议进程与运输实体进行层间交互的一种地址,传输层的端口号分为两大类,一是服务器使用的端口号,这里又分两类,熟知端口号,也叫系统端口号,数值为0~1023,例如FTP(21)、HTTP(80)、SMTP(25)等,另一种是登记端口号,数值在1024~49151;另一类是客户端使用的端口号,数值在49152~65535之间。

传输层有一个重要的功能是复用和分用,复用是指发送方不同的应用进程可以使用同一个传输层协议传送数据,而分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的进程。

    传输层有两个协议,面向连接的TCP和无连接的UDP。UDP是无连接的,使用尽最大努力交付,即不可靠交付,UDP是面向报文的,UDP没有拥塞控制,因此网络出现的拥塞不会使源主机发送速率降低,UDP支持一对一、一对多、多对一、多对多的交互通信,UDP的首部开销小。TCP是面向连接的传输层协议,TCP连接只能是一对一的,它提供可靠的交付服务,也就是说,通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达,TCP提供全双工通信,TCP是面向字节流的,TCP把应用程序交下来的数据块看成无结构的字节流,TCP不保证接收方应用程序收到的数据块和发送方应用程序所发出的数据块具有对应的大小关系(例如,发送方应用程序交给发送方TCP共10个数据块,但接收方的TCP可能只用4个数据块就把收到的字节流交付给了上层的应用程序,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样)。

     TCP连接的端点叫做套接字(socket)或插口,即(IP地址:端口号),每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

    TCP的运输连接有三个阶段,即连接建立、数据传送、连接释放。TCP连接建立的过程要使每一方能够确定对方的存在,主动发起连接建立的应用进行叫做客户(client),被动等待连接建立的应用进程叫做服务器(server),连接建立的过程叫做三次握手,假设A为客户,B为服务器,A发送一个报文给B,B发回确认,然后A再加以确认,来回共三次。

    


    连接的释放需要发送四个包,因此成为四次挥手。客户端或服务器都可以主动发起挥手动作。

应用层

    第五层是应用层,FTP(对应应用,文件传送)、HTTP(对应应用万维网)、TELNET(远程终端接入)、SMTP(电子邮件)使用的传输层协议都是TCP,DNS(名字转换)、TFTP(文件传送)、专用协议(IP电话、流式媒体通信)等使用的传输层协议都是UDP。

    以上就是计算机网络的五层协议。


2017-02-19 10:14:02 MakeContral 阅读数 927
  • linux实战视频课程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机

    249 人正在学习 去看看 刘英杰

转自:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

我们每天使用互联网,你是否想过,它是如何实现的?

全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?

互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。

下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚互联网的原理。

=================================================

互联网协议入门

作者:阮一峰

一、概述

1.1 五层模型

互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。

用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。

如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。

如上图所示,最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(Application Layer),中间的三层(自下而上)分别是"链接层"(Link Layer)、"网络层"(Network Layer)和"传输层"(Transport Layer)。越下面的层,越靠近硬件;越上面的层,越靠近用户。

它们叫什么名字,其实并不重要。只需要知道,互联网分成若干层就可以了。

1.2 层与协议

每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。

大家都遵守的规则,就叫做"协议"(protocol)。

互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。

二、实体层

我们从最底下的一层开始。

电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

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

三、链接层

3.1 定义

单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?

这就是"链接层"的功能,它在"实体层"的上方,确定了0和1的分组方式。

3.2 以太网协议

早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做"以太网"(Ethernet)的协议,占据了主导地位。

以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

3.3 MAC地址

上面提到,以太网数据包的"标头",包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?

以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。

每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

3.4 广播

定义地址只是第一步,后面还有更多的步骤。

首先,一块网卡怎么会知道另一块网卡的MAC地址?

回答是有一种ARP协议,可以解决这个问题。这个留到后面介绍,这里只需要知道,以太网数据包必须知道接收方的MAC地址,然后才能发送。

其次,就算有了MAC地址,系统怎样才能把数据包准确送到接收方?

回答是以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。

有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

四、网络层

4.1 网络层的由来

以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到洛杉矶的网卡了,技术上是可以实现的。

但是,这样做有一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一"包",不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。

互联网是无数子网络共同组成的一个巨型网络,很像想象上海和洛杉矶的电脑会在同一个子网络,这几乎是不可能的。

因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

这就导致了"网络层"的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。

于是,"网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

4.2 IP协议

规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。

习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数"子网掩码"(subnet mask)。

所谓"子网掩码",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

4.3 IP数据包

根据IP协议发送的数据,就叫做IP数据包。不难想象,其中必定包括IP地址信息。

但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

回答是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。

具体来说,IP数据包也分为"标头"和"数据"两个部分。

"标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。

IP数据包的"标头"部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的"数据"部分,最长为65,515字节。前面说过,以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

4.4 ARP协议

关于"网络层",还有最后一点需要说明。

因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况下,对方的IP地址是已知的(后文会解释),但是我们不知道它的MAC地址。

所以,我们需要一种机制,能够从IP地址得到MAC地址。

这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理。

第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

五、传输层

5.1 传输层的由来

有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。

接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

5.2 UDP协议

现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

UDP数据包,也是由"标头"和"数据"两部分组成。

"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

5.3 TCP协议

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

六、应用层

应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

"应用层"的作用,就是规定应用程序的数据格式。

举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

至此,整个互联网的五层结构,自下而上全部讲完了。这是从系统的角度,解释互联网是如何构成的。下一篇,我反过来,从用户的角度,自上而下看看这个结构是如何发挥作用,完成一次网络数据交换

2018-04-24 16:21:23 weixin_39554266 阅读数 6409
  • linux实战视频课程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机

    249 人正在学习 去看看 刘英杰

计算机网络五层协议

1.应用层

任务 :为操作系统或网络应用程序提供访问网络服务的接口 ,通过应用进程间的交互完成特定网络应用。应用层定义的是应用进程间通信和交互的规则

  • 常用协议:HTTP、SMTP、FTP、ping、telnet、DNS、DHCP等

HTTP协议(超文本传输协议)
主要特点:

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径;请求方法常用GET、HEAD、POST等,每种方法规定了客户与服务器联系的不同类型;HTTP协议简单,服务器程序规模小,通信速度较快
  • 灵活:HTTP允许传输任意类型的数据对象;正在传输的数据类型由Content-Type加以标记
  • 无连接:无连接是指每次连接只处理一个请求;服务器处理完客户请求,并收到客户应答后,即断开连接,节省传输时间
  • 无状态:无状态是指协议对于事务处理没有记忆能力;应答较快,但传输数据量较大

HTTP URL:定位网络资源

  • http://host[:port][abs_path]

HTTP请求

  • 三部分组成:请求行、消息报头、请求正文
  • 格式:Method Request-URI HTTP-Version CRLF
  • Method:请求方法,GET、POST等
  • Request-URI:请求的HTTP协议版本
  • CRLF:回车换行

HTTP响应

  • 由三部分组成:状态行、消息报头、响应正文
  • 状态行格式:HTTP-Version Status-Code Reason-Phrase CRLF
  • HTTP-Version:服务器HTTP协议版本
  • Status-Code:服务器返回的响应状态码

HTTP状态码

  • 由三位数字组成,首数字定义响应类别
  • 1xx:指示信息,表示请求已接收,继续处理;
  • 2xx:成功
  • 3xx:重定向,要完成请求必须进行更进一步的操作;
  • 4xx:客户端错误,请求有语法错误或请求无法实现
  • 5xx:服务器端错误:服务器未能实现合法的请求

常见状态代码

  • 200:OK,请求成功;
  • 400:Bad Request,请求有语法错误,不能被服务器所理解;
  • 401:Unauthorized,请求未经授权;
  • 403:Forbidden,服务器收到请求,但是拒绝提供服务;
  • 404:Not Found,请求资源不存在;
  • 500:Internet Server Error,服务器发生不可预期的错误;
  • 503:Server Unavailable,服务器不能处理客户请求

2.运输层

任务:负责向两个主机中进程之间的通信提供通用数据服务(为两台主机的应用程序提供端到端通信)

主要使用以下两种协议:
传输控制协议TCP :提供面向连接的 、可靠的、基于流的数据传输服务,数据传输的单位是报文段。使用超时重发、数据确认等方式确保数据被正确发送至目的地
用户数据报协议UDP:提供无连接的、不可靠的、基于数据报的数据传输服务;数据传输的单位是用户数据报

3.网络层

任务: 负责对数据包进行路由选择和存储转发

  • 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段用户数据报封装成分组IP数据报)或包进行传送。

  • IP协议:逐跳发送模式;根据数据包的目的地IP地址决定数据如何发送;如果数据包不能直接发送至目的地,IP协议负责寻找一个合适的下一跳路由器,并将数据包交付给该路由器转发

  • ICMP协议:因特网控制报文协议,用于检测网络连接

4.数据链路层

任务: 负责分配MAC地址

  • 两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻的链路上传送帧(frame)。每一帧包括数据和必要的控制信息。

  • 网卡接口的网络驱动程序,处理数据在物理媒介上的传输;不同的物理网络具有电气特性,网络驱动程序隐藏实现细节,为上层协议提供一致接口

  • 常用协议:地址解析协议(ARP)和反地址解析协议(RARP),实现IP地址与机器物理地址(MAC地址)之间的转换

5.物理层

物理层所传数据单位是比特(bit)。物理层要考虑用多大的电压代表1 或 0 ,以及接受方如何识别发送方所发送的比特。

6.各层对应的工作设备

  • 物理层:中继器、集线器
  • 数据链路层:网桥或交换机
  • 网络层中继系统:路由器
  • 网络层以上的中继系统:网关
2017-10-13 16:06:41 qq_29791893 阅读数 1271
  • linux实战视频课程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机

    249 人正在学习 去看看 刘英杰

五层协议的体系结构从上往下依次为:应用层、运输层、网络层、数据链路层、物理层。

1.应用层
任务:通过应用进程间的交互来完成特定网络应用。
应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。
万维网的应用层协议:HTTP(超文本传输协议)。

2.运输层
a. 任务:负责向两个主机中进程之间的通信提供通用的数据传输服务。
b. 运输层主要是用以下两种协议:
1)传输控制协议TCP
提供面向连接的、可靠的、面向字节流的数据传输服务,其数据传输的单位是TCP报文段
TCP/IP协议中,TCP协议采用三次握手建立一个连接:
第一次握手:建立连接时,客户端A发送SYN包(连接请求)到服务器B,并进入SYN_SEND(同步已发送)状态,等待服务器B确认。
第二次握手:服务器B收到SYN包,必须确认客户A的SYN,同时自己也发送一个SYN包,即SYN+ACK(确认连接请求)包,此时服务器B进入SYN_RCVD(同步收到)状态。
第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK,此包发送完毕,客户端A和服务器B进入ESTABLISHED(已建立连接)状态,完成三次握手。
完成三次握手后,客户端与服务器开始传送数据。
TCP协议采用四次挥手释放连接:
(1)客户端A发送一个FIN(释放连接报文段),用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK(确认包)。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认。
2)用户数据报协议UDP
提供无连接的、尽最大努力传输的、面向报文的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是UDP用户数据报

3.网络层
a. 任务:负责为分组交换网上的不同主机提供通信服务。
在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包(packet)进行传送。在TCP/IP体系中由于网络层使用IP协议,因此分组也叫作IP数据报,简称数据报。
注:不要将运输层的“用户数据报UDP”和网络层的“IP数据报”弄混。
b. 网络层使用的中间设备叫做路由器。

4.数据链路层
a. 任务:将网络层交下来的IP数据报封装成,在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息。
b. 使用信道:点对点信道(一对一通信)、广播信道(一对多通信)。
c. 三个基本问题:封装成帧、透明传输、差错检测。
d. 以太网:是一种局域网,使用的协议是CSMA/CD,意思是载波监听多点接入/碰撞检测。
多点接入:总线型网络,即许多计算机以多点接入的方式连接在一根总线上。
载波监听:不管在发送前,还是在发送中,每个站都必须不停地检测信道。
碰撞检测:边发送边监听。
注:以太网规定的最短帧长64字节。凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
e. 在数据链路层扩展以太网使用网桥,网桥工作在数据链路层。

5.物理层
任务:确定与传输媒体的接口有关的一些特性,透明地传送比特流。
在物理层上所传数据的单位是比特

2019-12-04 15:17:41 qq_36186768 阅读数 39
  • linux实战视频课程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机

    249 人正在学习 去看看 刘英杰

一、网络部分基本知识

网络通信原理:

互联网的本质就是一系列的网络协议

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

先说一下计算机网络的五层协议的体系结构,以及各层协议:
1.物理层
2.数据链路层
3.网络层
4.传输层
5.应用层

每层运行常见物理设备:

传输层: 四层交换机 、四层的路由器
网络层:三层交换机、路由器
数据链路层:网桥、以太网交换机、网卡
物理层:中继器、集线器、双绞线

1.物理层:

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

2.数据链路层:

数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组是什么意思

数据链路层的功能:定义电信号的分组方式

以太网协议:
早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

ethernet规定:
1.一组电信号构成一个数据包,叫做"帧"
2.每一个数据帧分为:报头head和数据data两部分
head | data

head包含:(固定18个字节)
1.发送者/源地址,6个字节
2.接收者/目标地址,6个字节
3.数据地址,6个字节

data包含: (最短46字节,最长1500字节)

1.数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

mac地址:
head中包含的源和目的地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,
12位16进制数表示(前6位是厂商编号,后六位是流水线号)

广播:
有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另一台主机的mac地址,ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼(一个局域网里))

3.网络层:

网络层由来:

有了ethernet、mac地址、广播的发送方式,世界上的计算机
就可以彼此通信了,问题是世界范围的互联网是由一个个彼此
隔离的小的局域网组成的,那么如果所有的通信都采用以太网
的广播方式,那么一台机器发送的包全世界都会收到。
这就不仅仅是效率低的问题了,这会是一种灾难。因此,必须
找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。

以太网包只能在一个局域网内发是哪个,一个局域网是一个广播
域,以太网的广播只能在一个广播域内发送,跨广播域的通信只能
通过路由转发

如果是就采用广播的方式发送,如果不是,就采用路由的方
式(向不同广播域/子网分发数据包),mac地址是无法区分的,
它只跟厂商有关,所以就有了ip地址,它的作用是引进一套新
的地址,使得我们能够区分不同的计算机是否属于同一个子
网络。这套地址就叫做”网络地址”,简称”网址”

ip协议:

ip数据包:
ip数据包也分为head和data部分,无需为ip包定义单独的栏位,
直接放入以太网包的data部分

head:长度为20到60字节
data:最长为65515字节
而以太网数据包的"数据部分",最长只有1500字节。因此,如果
ip数据包超过了1500字节,它就需要分割成几个以太网数据包,
分开发送了

以太网 | ip头 | ip数据

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数”子网掩码”(subnet mask)。

所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包
到最后都要封装上以太网头,然后通过以太网协议发送,在谈及
以太网协议的时候,我们了解到,
通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac
是容易的,如何获取目标主机的mac,就需要通过arp协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24

一、首先通过ip地址和子网掩码区分自己所处的子网
    场景        数据包地址
    同一子网     目标主机mac,目标主机ip
    不同子网      网关mac,目标主机ip

二、分析172.16.10.10/24与172.16.10.11/24处于同一网络,
   如果不是同一网络,那么下标中目标ip为172.16.10.1通过
   arp获取的是网关的mac

             源mac    目标mac             源ip          目标ip                                数据部分
发送端主机   发送端    FF:FF:FF:FF:FF:FF  172.16.10.11   172.16.10.11     数据
(过程:
        首先分析是否在同一个局域网,如果在,目标Mac是FF:FF:FF:FF:FF:FF
        所有人都收到了,解包后知道了发送端是想要mac地址,然后看目标ip,只有
        ip是这个的才会返回自己的mac,其他的会丢弃这个包
            )

当网络层的IP包进入链路层时,链路层该如何加这个头部的目标信息呢?它要依靠ARP协议来完成.显然如何加链路头并不是网络层的功能。而且,ARP协议工作时,并不使用IP的包头。所以也有很多人说,ARP是链路层的。可以说,在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。

4.传输层
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。

接下来的问题是,同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

“端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

“传输层”的功能,就是建立”端口到端口”的通信。相比之下,”网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做”套接字”(socket)。有了它,就可以进行网络应用程序开发了。

UDP协议

现在,我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫做UDP协议,它的格式几乎就是在数据前面,加上端口号。

UDP数据包,也是由”标头”和”数据”两部分组成。

“标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的”数据”部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP数据包非常简单,”标头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

TCP协议

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的”数据”部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

5.应用层
应用层由来:

应用程序收到”传输层”的数据,接下来就要进行解读。由于互联网是开放架 构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

应用层功能:规定应用程序的数据格式

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、
FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的
格式,这些应用程序协议就构成了"应用层"。

发送数据是一个封装的过程,接收数据则是解封装。

上述就是网络的5层协议讲解

#-----------------------------------------------------------------------------

补充:

http协议:
http是一个通信规则,通信规则规定了客户端发送给服务端的内容格式,也规定了服务端发送给客户端的内容格式。其实,我们要学习的就是这两个格式!客户端发送给服务器的格式叫"请求协议";服务器发送给客户端的格式叫"响应协议"

特点:
http叫超文本传输协议,基于请求/响应模式的!

http是无状态协议(一次请求,拿到数据后,再和服务端无任何关系),
ftp是有状态的

请求协议
请求协议的格式如下:
请求首行: //请求方式,请求路径 协议和版本,例如:GET/index.html HTTP/1.1
请求头信息: //请求头内容,即为key:value格式,例如: Host:localhost
空行: //用来和请求体分隔开
请求体: //get没有请求体,只有post有请求体
因为如果是get方式,数据都跟在url的后面传到服务端去的。

浏览器发送给服务器的内容就是这个格式的,如果不是这个格式服务器将
无法解读!在http协议中,请求有很多请求方法,其中最为常用的就是
get和post。

get请求
http默认的请求方法就是get
数据必须在1k之内

get请求的常用操作:
   1.在浏览器的地址栏中直接给出url,那么就一定是get请求
   2.点击页面上的超链接也一定是get请求
   3.提交表单时,表单默认使用get请求,但可以设置为post

转载:https://blog.csdn.net/wy757510722/article/details/73917007

没有更多推荐了,返回首页