TCP/IP协议理解

时间:2022-10-19 21:22:16

TCP/IP协议理解

一、    协议分层

由于ISO标准中的网络模型是个7层模型,但是由于7层模型对于当时的网络厂商来说太过复杂,很多厂家采用了简化的4层模型来实现网络设备,4层模型也就成了事实的网络标准模型。这也导致很多写计算机网络的书籍中对现有网络的分层依据不同,导致出现了网络7层,5层,4层模型。TCP/IP协议是个4层模型,OSI是7层模型,很多教科书综合两个模型,提出了 5层模型的概念。下图是4,5,7层之间对应的关系,本文主要是针对4层模型来进行讲解。

OSI 7层模型

TCP/IP 4层

5层

主要协议

应用层

应用层

应用层

http,ftp,dns,

Dhcp,Vpn,私有协议等

表示层

会话层

传输层

传输层

传输层

Tcp,udp

网络层

网络层

网络层

Icmp

数据链路层

链路层

链路层

ARP

物理层

物理层

以太网,WIFI,4G

二、    常用网络设备

1.      交换机

交换机百度百科的解释是一种用于电(光)信号转发的网络设备。太过于专业,这里我举个例子,公司每个部门都有一个助理,如果部门比较大,员工的名字或许都记不全,这个时候我们推举个记忆好的员工做为“传话助理”,员工A不认识员工B,由于工作需求,员工A需要向员工B发生对话时,员工A需要把要说的话先告诉“传话助理”,“传话助理”找到员工B,把员工A的话原封不动的说给员工B。这里的“传话助理”就是交换机。

交换机一般有24个RJ45口,有设备连接上后,交换机会把RJ45口和设备的mac地址进行关联。当有数据方向指定的mac地址时,交换机会把此包数据从对应的RJ45口发送出去。交换机是链路层设备,由于链路层在7层模型中第2层,所以很多专业书也称交互机为二层网络设备。

搭建简单的局域网只需要交换机即可。把所有PC连上交换机,PC端自己定义IP,然后就可以通信了。交互机是二层设备是没有IP地址的。

TCP/IP协议理解

交换机

2.      路由器

路由器(Router),是连接因特网中各局域网、广域网的设备。它是网络层设备,处在7层模型中的第3层,也称3层网络设备。

路由器的RJ45口相对于交换机就少很多,一般路由器有1WAN口,多个LAN口。其中每个RJ45口都对应一个IP地址,对应一张网卡。同时还会有个Console口,也就是调试口,一般是RJ45的串口,如下图最右侧的那个口就是调试口。

路由器最重要的是路由功能。其中路由是单向的。举个例子 假如农民A住在偏僻的农村,A想去北京。怎么办呢?

第一步 A去村长家,问去北京怎么走,村长不知道,村长告诉A,你做三轮车去找镇长。

第二步 A到了镇长家,问去北京怎么走,镇长也不知道,镇长告诉A去做公交车去找县长。

第三部  A到了县长家,问去北京怎么走,县长也不知道,县长说你做大巴车找市长。

第四不 A到了市长家,问北京怎么走,市长去过北京,就告诉A做高铁到北京。

最后A做高铁到了北京。  这个例子中 村长,镇长,县长,市长都扮演了个路由的作用,告诉A 下一步的路 ,由那里走。在网络中他们对应都是路由器。同时三轮车对应就是网络中的WIFI,公交对应的就是双绞线,大巴车对应就是同轴电缆,高铁对应的就是光缆。

假如A打工一年攒了些钱,想从北京返回A村,A就做飞机到了市里,然后从市里买了个长安CS75直接开到家了。A去北京和从北京返回走的路线是不同,网络中去经过的路由器和返回经过的路由器一般也是不同的。 所以路由链是单向的。

还是上面这个例子,假如A要去其他村的农民B家,A的过程就是 AàA村村长à镇长àB村村长à农民B 。 之前镇长不知道怎么去北京,就告诉A到县长家(这个就是路由器中的默认路由)。

TCP/IP协议理解

路由器

3.      家用路由器

家用路由器不是单纯意义的路由器,它是由一个路由器加小交换机组成。我们说交换机所有RJ45口都没有IP,路由器除了调试口其他RJ45口都有ip,对应一个网卡。但是家用路由器只有WAN口有ip地址,其它的LAN口是类似于交换机的RJ45口,没有ip。 所以我们说家用路由器=小路由器+小交换机

TCP/IP协议理解

家用路由器

三、    链路层

1.      协议结构

TCP/IP协议理解

链路层协议结构

上图中的目的地址是物理地址,也就是我们说的mac地址。 链路层根据类型来判断此包数据时本层的ARP,RARP包,还是上层的ip数据包。

2.      ARP

TCP/IP协议理解

ARP协议结构

所有网络设备接收到以太网目的地址为FF:FF:FF:FF:FF:FF 都要处理。如果发现该协议是ARP协议,同时ARP协议中的目的IP地址与本设备的IP地址相同,则回复此包数据,否则不做应答。如果该设备是交换机,则交换机会对该交换机下所有的网络设备转发,也就是广播。 所以ARP一般也称广播包。下图就是一个ARP请求包。

TCP/IP协议理解

Arp请求包抓包结果截图

另外当所有设备收到ARP的应答包后,根据应答包中的源mac和源ip来更新本机的高速ARP缓存。 Window下可以通过arp –a命令来查看本机的高速ARP缓存。 由于ARP包的响应超时时间一般都很长,所以为了实现快速上网,都是通过高速缓存来找到ip对应的mac地址。  下图是ARP应答包

TCP/IP协议理解

Arp应答包抓包结果截图

3.      免费ARP

只有高速arp缓存不能完全解决快速上网的需求,假如我本机手动修改了IP地址后,其它局域网的计算机不能及时更新本机的ARP高速缓存,那其它计算机和我本机通信时就会变得非常慢。但为什么这种情况在实际上网中没有发生呢? 原因就是免费ARP,那什么是免费ARP呢?  假如我手动修改本机ip地址为192.168.1.72。更改成功后,我本机会自动的发一帧ARP请求包,请求IP为192.168.1.72的mac地址是多少。这包数据会被交换机转发,但是只有我本机才会响应此包数据,并返回ARP应答包,由前面讲的ARP的应答包会被交换机转发,同时收到ARP应答包的计算机会更新本机高速缓存。通过这种方式当你更改IP时,局域网中的其它计算机也能及时更新ARP缓存。

计算机发送ARP询问自己的这种ARP包就称为免费ARP,免费ARP的作用是同步更新局域网中其它计算机的高速ARP缓存。

四、    网络层

网络层也叫IP层。网络层主要的协议是ICMP协议,ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

1.      ICMP协议

简单的说ICMP协议主要是用于网络检测的。下图就是IP层的协议结构。

TCP/IP协议理解

Ip协议数据结构

这里面有一个重点,那就是TTL。 那TTL有什么用呢?假如有两台计算机网线直连,计算机A根据自己的路由表把数据发现计算机B,同时计算机B根据自己的路由表发向计算机A。出现这种情况时数据包会在两者之间做乒乓,不会消失。网络就很容易出现堵塞,直至瘫痪。为了避免这种回环路由造成的网络问题,IP数据包每经过一个路由器TTL值都会减一,当TTL等于0时,路由器或者计算机就会丢弃此包数据,同时返回一帧ICMP报文,告诉源计算机,您的报文由于TTL为0被我任性丢掉了。

常用的网络命令tracert(window下),traroute(linux下),就是用TTL来实现的。下图为通过tracert跟踪到百度经过的路由节点。

TCP/IP协议理解

Tracert跟踪路由

Tracertt 先发送 TTL 为 1的ip数据包,第一个路由器收到此包数据后,会丢掉此报文,同时向源计算机返回一个ICMP报文,根据ICMP报文,tracert就拿到了第一个路由器的ip地址。 第二次tracert就把TTL设置为2的报文,以此类推,跟踪完本机到百度经过的所有路由器。在网络调试中,tracert命令很重要,但计算机A到达不到计算机B时,网络工程师可以通过tracert命令来定位是那两个路由器节点的网络出现问题。细心的朋友看到这里就发现一个问题了,tracert设置TTL为16,到达180.97.33.108,TTL为0 返回ICMP。那下一包数据tracert设置TTL为17,报文刚好到达百度服务器TTL为1,百度服务器正常处理此报文,然后就不会发ICMP报文了。那么Tracert只使用TTL时是判断不出路由结束的,那他是怎么判断报文到达了呢?这个问题留给大家课后自己百度了。百度关键字“tracert实现原理”。

另外命令ping也是ICMP报文。下图是ping的抓包结果。

TCP/IP协议理解

Ping抓包结果

2.      路由

路由有很多知识点,本文主要讲解路由表的查询,删除,添加以及使用。在window下使用route print命令可以查看本机路由表。如下图

TCP/IP协议理解

Route print命令结果

上图中 “接口列表”就是本机网卡的列表(包括虚拟网卡)。 路由表怎么看呢? 计算机发送IP数据包时,拿到IP数据包中的目标IP地址,与本机路由表的网络掩码按位与,得出的结果与网络目标相同,则符合此条路由。然后根据此条路由的接口来决定链路层的目的MAC是多少。当接口是“在链路上” 目标mac地址就是要访问目的IP计算机的Mac地址。如果接口是“10.17.12.254” ,链路的目标mac地址就是 10.17.12.254的MaC地址。

举个例子,ip数据包是 10.17.12.212à10.17.12.240  。源IP是10.17.12.212(我本机ip),目的地址是10.17.12.240. 根据路由表从第二条开始匹配(第一条是默认路由,最后匹配)。 10.17.12.240&255.255.255.0等于10.17.12.0 。10.17.12.0是刚好是第二条路由的网络目标。所以符合第二条路由。第二条路由的网关是“在链路上”,所以在将ip数据包外加链路层协议时,目标mac地址就是10.17.12.240的mac地址,这个mac地址可以从本机的arp告诉缓存取出(没有则会发送arp请求)。

假如ip数据包是10.17.12.212à180.149.132.47,从第二条路由向下开始匹配,发现都没有匹配,然后再匹配第一条,180.149.132.47&0.0.0.0 等于0.0.0.0(所有ip与0.0.0.0位与都会是0.0.0.0,所以说是默认路由)。匹配第一条路由。第一条路由的网关是10.17.12.254。所以在将ip数据包增加链路层时,链路层的mac地址是10.17.12.254的mac地址。这样这包ip数据就会发送到网关上。

数据包要到达指定的ip地址,只需目的mac是目的ip的mac。

其实在我们手动固定ip地址时,点完确定,确定(父窗体的确定按钮)后,系统会自动为添加一条默认的路由。你也可以通过window提供的命令行添加,删除路由。

TCP/IP协议理解

Window手动更改ip地址

添加路由命令

route add 0.0.0.0 mask 0.0.0.0 10.17.12.254 if 11

mask后的是网络掩码, 10.17.12.254是网关,if(interface)后的11是route print命令最上面显示网卡编号。

删除路由命令

route delete 10.41.0.0 mask 255.255.0.0

五、    传输层

传输层主要是由UDP和TCP两种协议。TCP比较复杂,这里只做简单介绍。

1.      Upd

Udp报文结构如下图所示,

TCP/IP协议理解

Udp报文结构

从upd的报文结构看,udp相当简单,而且udp是非可靠传输协议,所以它想ip数据包一样,发出去后就不管了,没有多余的应答流程。Udp只是在ip层上加了端口,只要ip可达,upd也基本能通信。也正是由于简单,udp有了快速,减少流量的特性。大家都知道腾讯的QQ在极端网络下也能登录和通信,它的通信协议就是基于UDP自定义的。下图就是qq的协议抓包分析。

TCP/IP协议理解

QQ协议抓包

另外DNS协议也是基于udp协议,如下图抓包所示

TCP/IP协议理解

Dns协议抓包

2.      Tcp

Tcp协议的报文结构如下图

TCP/IP协议理解

Tcp协议结构

TCP协议是可靠传输,它的报文是有应答机制的,所以它的报文结构增加了发送序号,应答确认序号。同时为了增加传输效率,有窗口大小。如窗口是10,那么就是发送方发送10条数据帧后,应答方返回一帧确认信息。Tcp窗口大小可以根据网络的好坏来调整。同时TCP还规定了建立连接的三次握手,断开的4次握手等机制,详情可以百度。

TCP/IP协议理解

Tcp协议抓包

另外tcp协议中并没有客户端与服务端的概念,tcp里面就有这种概念,那这种客户端服务器是怎么定义的呢? 在协议交互流程中,总是有一方率先发起协议流程,那么发起方就是客户端,接收方就是服务器。 如tcp协议中,总是由client先发送第一包数据,所以叫客户端。Upd协议中,任何一方都可以发起,所以没有客户端和服务器概念。

另外还有一个知识点就是 当一台计算机TCP协议使用了80端口后,这台计算机在UDP协议中,同样可以继续使用80端口。 也就是说tcp,udp协议的端口互不干扰。

六、    应用层

应用层协议有很多,比如http,https,ftp,dhcp等,这里我们就讲下DHCP协议。为什么将DHCP协议,因为它比较特殊,为什么特殊?请往下看。

1.      DHCP

DHCP协议比较特殊是因为在DHCP客户端在发送数据前是没有ip地址的,没有ip地址怎么发送IP数据包呢? 下图是DHCP数据发送过程.

TCP/IP协议理解

DHCP数据发送过程

第一步:

DHCP客户端主动发起DHCP Discover包,用来寻找DHCP服务器,其中:

源MAC是自己的MAC地址,目的MAC是FFFF.FFFF.FFFF的广播

源IP是0.0.0.0(现在还没有IP,就用全0地址),目的IP是255.255.255.255的三层广播

因为DHCP服务器在哪里还不知道,所以使用广播来寻找,广播会泛洪到整个网段中;

第二步:

DHCP服务器收到客户端发的DHCP Discover之后,会在自己的地址池中拿出一个没有分配的地址以及配套的参数(如:掩码、DNS、网关、域名、租期……),然后以一个DHCP Offer包发送出去。

这个DHCP Offer数据包的地址如下:

源MAC是DHCP服务器的MAC,目的MAC是FFFF.FFFF.FFFF的广播

源IP是DHCP服务器的IP,目的IP是255.255.255.255的广播

这时客户端还没有获得IP,DHCP服务器端现在还无法定位客户端,所以用广播来回应。

第三步:

客户端收到这个DHCP Offer后,会再发出一个DHCP Request给服务器来申请这个Offer中包含的地址。

这个时候,客户端还没有正式拿到地址,所以还需要向DHCP服务器申请。

这时客户端的源IP还是0.0.0.0,目的IP还是255.255.255.255

源MAC是客户端的MAC,目的MAC是FFFF.FFFF.FFFF广播包

第四步:

服务器收到客户端的请求后,会发出一个DHCP ACK用来确认这个IP地址可以分配给这个客户端。

客户端收到第四个DHCP ACK数据包才算正式拿到了这个IP。

DHCP协议是基于UDP的应用层协议。

七、    高级应用

前面六章讲解只是经典的网络模型,如果现实中的网络按照上面的经典网络搭建,那样只要一台计算机插上网线就可以上网了。但是现实生活中我们还要想ISP运营商付费,还要拨号才能上网,而且上网后我们也不能正常远程连接其他计算机。 原因是你还有一部分高级应用不知道。下面我们就讲VPN,NAT,PPP这三种网络技术来解释为什么,同时帮助大家跳出局域网,跳出传统网络来看清我们现实中的网络架构。

1.      VPN

VPN(Virtual Private Network,虚拟专用网络),连接公网中的两个局域网,让两个局域网的从逻辑上是一个局域网。如下图所示

TCP/IP协议理解

VPN结构图

图的左边是一个局域网,右边是个局域网。两个路由器通过公网连接。假设计算机A的IP地址为192.168.1.2,计算机C的ip地址是192.168.1.3。假如两个路由器之间配置了VPN(一般企业路由器都支持VPN配置),那么A可以直接通过192.168.1.3来访问到C。那这是怎么实现的呢?

TCP/IP协议理解

VPN报文简化图

在上图中,我们把PC1的mac地址简写成MAC1,IP地址简写成IP1。PC1向PC2发数据PC1àPC2。其中PC1àPC2到达路由器1后,报文就变成了MAC路1+IP路1—> MAC路2+IP路2. 其中MAC路1+IP路1内数据区就是PC1àPC2的全部数据(包括链路层)。然后报文到达路由器2后,被路由器2解析后报文重新变成PC1àPC2,然后到达PC2。

根据VPN包裹的内容不同,VPN又可以分为二层VPN,三层VPN。上图中的例子就是二层VPN,因为图中VPN包裹的内容是从二层(链路层)开始的。如果包裹是从IP开始就是三层VPN了。VPN的并没有统一标准,由各大厂家自己来,所以市场上就出现了很多VPN协议,常用的有PPTP, L2TP,IPSec,GRE等。

Vpn的原理很简单,但是VPN关键在于动手能力,自己搭建VPN可以把很多网络知识串联起来,尤其是网络拓扑结构,路由方面。

2.      NAT

NAT(Network Address Translation)网络地址转换。由于IPV4地址资源的稀缺,加上移动互联网的快速发展,现实网络由之前的PPPOE拨号,变成了现在NAT方式接入。下面我们讲解NAT的原理。

TCP/IP协议理解

NAT网络简化图

图中左侧是一个192.168.1.0的局域网,上面180.154.15.78是台公网的服务器。192.168.1.2:100à180.154.15.78:300 报文在经过左侧路由器192.168.1.1(10.12.17.3是改路由器WAN口IP)后,路由器把报文转换成10.12.17.3:500à180.154.15.78:300 ,同时路由器内部记录了192.168.1.2:100---10.12.17.3:500的映射关系。这样报文确实到达了180.154.15.78。当180.154.15.78返回数据时,经过左侧路由器,路由器会根据之前的映射关系把180.154.15.78:300à10.12.17.3:500转换成180.154.15.78:300à192.168.1.2:100。然后数据报文就返回到192.168.1.2中。所以NAT是双向的。

NAT又有SNAT,(Source NAT),DNAT(Destination NAT)之分,我们上图中的例子属于 SNAT,因为我们是对IP数据包的源IP进行的NAT。同理DNAT是对IP数据包的目的IP进行的地址转换。

3.      打洞

打洞是个通俗的讲法,意思是说分属于不同的两个局域网的计算机,各自从自己的网络中通过NAT的方式打出一个洞(一个外网IP+端口),然后两台计算机都访问这个洞(对方的外面ip+端口)进行通信。打洞有UDP打洞和TCP打洞。由于TCP打洞需要解决端口复用的问题,所以比UDP稍微麻烦,导致了很多打洞都是基于UDP的。打洞的原理其实就是NAT,如上图NAT网络简化图中,192.168.1.2:100 通过外网服务器180.154.15.78,打洞,外网的套接字变成了10.12.17.3:500,同理192.168.1.9:900通过180.154.15.78,打洞,外网的套接字变成了10.18.45.78:960。然后服务器180.154.15.78把双方的外网地址告诉对方。这样192.168.1.2:100à10.18.45.78:960  ,192.168.1.9:900à10.12.17.3:500.  双方就可以通信了。这里需要注意的时,由于NAT是 Full Cone,Restricted Cone,Port Restricted Cone, Symmetic四种级别,前三种合称Cone NAT,也是目前国内网络中最常用的级别,在这种级别下,需要打洞的双方,同时向对方发送一帧报文。但是这一帧报文互相都接收不到,第二帧报文才会被接收到。具体打洞的细节读者可以自行百度,或者做实验来验证。

4.      PPP

点对点协议(Point to Point Protocol)是现有ISP运营商收费最常用的协议,PPPOE (Point to Point Protocol over Ethernet)PPP协议在以太网上的实现。

TCP/IP协议理解

PPP协议格式

我们目前连接互联网,在入口处都有一个“猫”(modem),这个猫就是把我们所发的4层协议做为 PPP协议的信息发送出去。也就是猫在我们原来的协议的外面又加了一层。

八、    总结

TCP/IP协议理解

ftp协议数据流向图

上图左侧是计算机A,右侧是计算机B。A发送的FTP报文经过本机的TCP,IP,链路层,层层包装后的报文,发向了路由器,过了路由器后,路由器会去掉链路层,源报文只有ip+tcp+ftp,但是路由器另外一段连接的是令牌环网。源报文就变成了 令牌环网帧+ip+tcp+ftp,然后送达计算机B。然后由计算机B层层解析,到达FTP服务器(应用程序)。

数据过了路由器,源mac地址和目的mac地址就会改变。

九、    参考资料

书籍: 《TCP/IP详解》 卷一 卷二 卷三   ,

《华为防火墙技术漫谈-强叔侃墙》  NAT,防火墙的经典之作

工具:  wireshark  跨平台的抓包工具

linux命令tcpdump

Fiddler    http,https的抓包

TCP/IP协议理解的更多相关文章

  1. TCP/IP 协议理解

    TCP/IP 协议(Transmission Control Protocol / internet Protocol),因特网互联协议,又名网络通讯协议.通俗而言:TCP负责发现传输的问题,一有问题 ...

  2. 一文让你秒懂互联网TCP/IP协议的深层含义

    什么是 TCP/IP 协议 首先,协议,可以理解为是一套统一的规则,就像行业标准.由于互联网主要的功能是传输信息,所以其协议一般是管理系统之间如何相互通信的规则. 用邮政和物流等线下的“运输协议”来理 ...

  3. 深入浅出理解 TCP/IP 协议 (一)

    文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...

  4. 简单理解TCP/IP协议

    一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...

  5. 关于TCP\IP协议的简单理解

    一: HTTP是基于TCP协议的,TCP属于传输层.HTTP属于应用层. 另一个属于传输层的是UDP协议. 但HTTP是基于TCP这个协议,不是UDP这个协议. TCP相比于UDP,更安全,稳定.因为 ...

  6. 理解TCP/IP协议

    TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...

  7. TCP/IP协议学习和理解

    TCP:Transmission Control Protocol-传输控制协议 IP:Internet Protocol-网络协议 TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP ...

  8. (转)tcp/ip协议的简单理解 -- ip报文和tcp报文的格式

    1.概念: TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程.入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地.出栈的过程,数据接收方每层不断地拆除首部 ...

  9. 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结

    门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...

随机推荐

  1. JSP连接MySQL数据库问题

    之前写了一大段,还说了一下具体JDBC连接数据库API的具体包的基本知识,哪知道自己手残不小心按了删除按钮.结果去看自动保存记录时,就只剩下下面这段了.好吧,其实最主要最核心的也就是下面这点了.具体如 ...

  2. 【Alpha】Daily Scrum Meeting第九次

    一.本次Daily Scrum Meeting主要内容 汇报情况. 上次提到的数据库字段问题,已经和合作队伍统一完毕. 在服务器上解析Json数据仍在解决中,现在直接使用手机发过去的数据进行解析. 二 ...

  3. PHP while使用

    $i = 0; while(true){ if($i == 0){ $i++; continue; }else if($i > 10){ break; }else{ echo $i." ...

  4. NSOperation操作依赖和监听

    1.操作依赖 NSOperation之间可以设置依赖来保证执行顺序 比如一定要让操作A执行完后,才能执行操作B,可以这么写 [operationB addDependency:operationA]; ...

  5. Javascript操作Cookie的脚本 — CookieHelper

    var HttpCookie = function(name, value, expires, path, domain) { if (name) this.Name = name; if (valu ...

  6. error: unknown field 'ioctl' specified in initializer

    error message: 原因: 从2.6.36开始,file_operations结构发生了重大变化 具体看  xx../include/linux/fs.h定义: 取消了原先的 int (*i ...

  7. Warensoft Stock Service Api客户端接口说明

    Warensoft Stock Service Api客户端接口说明 Warensoft Stock Service Api Client Reference 可使用环境(Available Envi ...

  8. [HMLY]8.Cocoa

    cocoa是苹果公司为mac os x所创建的原声面向对象API,是mac os x上五大API之一,其他四个是carbon,posiX,x11,java. 苹果的面向对象开发框架,用来生成 Mac ...

  9. 全景技术大揭秘,市场核心早洞悉——VR全景加盟

    未来已来,未来已见.2017是3D全景创业的天时,全景行业逐步走向成熟.全景智慧城市专注vr全景6年,技术国内遥遥领先.全景智慧城市市场总监常诚,透漏3D全景技术和市场的核心. 拍摄全景必备的设备:单 ...

  10. 基于testng框架的web自动化测试

    package baidutest; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.o ...