精华内容
下载资源
问答
  • TCP/IP四层模型

    千次阅读 2020-07-01 15:26:23
    TCP/IP 网络分层模型 还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。TCP/IP 当初的设计者真的是非常聪明,...TCP/IP 协议总共有四层,就像搭积木

    TCP/IP 网络分层模型

    还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。TCP/IP 当初的设计者真的是非常聪明,创造性地提出了“分层”的概念,把复杂的网络通信划分出多个层次,再给每一个层次分配不同的职责,层次内只专心做自己的事情就好,用“分而治之”的思想把一个“大麻烦”拆分成了数个“小麻烦”,从而解决了网络通信的难题。你应该对 TCP/IP 的协议栈有所了解吧,这里我再贴一下层次图。

    TCP/IP 协议总共有四层,就像搭积木一样,每一层需要下层的支撑,同时又支撑着上层,任何一层被抽掉都可能会导致整个协议栈坍塌。我们来仔细地看一下这个精巧的积木架构,注意它的层次顺序是“从下往上”数的,所以第一层就是最下面的一层。

     

    第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层。

    第二层叫“网际层”或者“网络互连层”(internet layer),IP 协议就处在这一层。因为 IP 协议定义了“IP 地址”的概念,所以就可以在“链接层”的基础上,用 IP 地址取代 MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。

    第三层叫“传输层”(transport layer),这个层次协议的职责是保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工作的层次,另外还有它的一个“小伙伴”UDP。

    TCP 是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。而 UDP 则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。两个协议的另一个重要区别在于数据的形式。TCP 的数据是连续的“字节流”,有先后顺序,而 UDP 则是分散的小数据包,是顺序发,乱序收。

    关于 TCP 和 UDP 可以展开讨论的话题还有很多,比如最经典的“三次握手”和“四次挥手”,一时半会很难说完,好在与 HTTP 的关系不是太大,以后遇到了再详细讲解。

    协议栈的第四层叫“应用层”(application layer),由于下面的三层把基础打得非常好,所以在这一层就“百花齐放”了,有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP 等等,当然还有我们的 HTTP。

     

    MAC 层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

    TCP/IP 协议栈的工作方式

    你可以把 HTTP 利用 TCP/IP 协议栈传输数据想象成一个发快递的过程。

    假设你想把一件毛绒玩具送给朋友,但你要先拿个塑料袋套一下,这件玩具就相当于 HTTP 协议里要传输的内容,比如 HTML,然后 HTTP 协议为它加一个 HTTP 专用附加数据。

    你把玩具交给快递小哥,为了保护货物,他又加了层包装再贴了个标签,相当于在 TCP 层给数据再次打包,加上了 TCP 头。

    接着快递小哥下楼,把包裹放进了三轮车里,运到集散点,然后再装进更大的卡车里,相当于在 IP 层、MAC 层对 TCP 数据包加上了 IP 头、MAC 头。

    之后经过漫长的运输,包裹到达目的地,要卸货再放进另一位快递员的三轮车,就是在 IP 层、MAC 层传输后拆包。

    快递员到了你朋友的家门口,撕掉标签,去除了 TCP 层的头,你朋友再拆掉塑料袋包装,也就是 HTTP 头,最后就拿到了玩具,也就是真正的 HTML 页面。

    这个比喻里省略了很多 TCP/IP 协议里的细节,比如建连、路由、数据切分与重组、错误检查等,但核心的数据传输过程是差不多的。

    HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。

    接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。

    但下层的传输过程对于上层是完全“透明”的,上层也不需要关心下层的具体实现细节,所以就 HTTP 层次来看,它不管下层是不是 TCP/IP 协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。

    我为这个过程画了一张图,你可以对照着加深理解。

    OSI 网络分层模型

    看完 TCP/IP 协议栈,你可能要问了,“它只有四层,那常说的七层怎么没见到呢?”

    别着急,这就是今天要说的第二个网络分层模型:OSI,全称是“开放式系统互联通信参考模型”(Open System Interconnection Reference Model)。TCP/IP 发明于 1970 年代,当时除了它还有很多其他的网络协议,整个网络世界比较混乱。

    这个时候国际标准组织(ISO)注意到了这种现象,感觉“野路子”太多,就想要来个“大一统”。于是设计出了一个新的网络分层模型,想用这个新框架来统一既存的各种网络协议。OSI 模型分成了七层,部分层次与 TCP/IP 很像,从下到上分别是:

     

    第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;

    第二层:数据链路层,它基本相当于 TCP/IP 的链接层;

    第三层:网络层,相当于 TCP/IP 里的网际层;

    第四层:传输层,相当于 TCP/IP 里的传输层;

    第五层:会话层,维护网络中的连接状态,即保持会话和同步;

    第六层:表示层,把数据转换为合适、可理解的语法和语义;

    第七层:应用层,面向具体的应用传输数据。至此,我们常说的“四层”“七层”就出现了。

     

    两个分层模型的映射关系

    第一层:物理层,TCP/IP 里无对应;

    第二层:数据链路层,对应 TCP/IP 的链接层;

    第三层:网络层,对应 TCP/IP 的网际层;

    第四层:传输层,对应 TCP/IP 的传输层;

    第五、六、七层:统一对应到 TCP/IP 的应用层。

    所以你看,这就是“理想与现实”之间的矛盾。理想很美好,有七层,但现实很残酷,只有四层,“多余”的五层、六层就这样“消失”了。

    但这也有一定的实际原因。

    OSI 的分层模型在四层以上分的太细,而 TCP/IP 实际应用时的会话管理、编码转换、压缩等和具体应用经常联系的很紧密,很难分开。例如,HTTP 协议就同时包含了连接管理和数据格式定义。到这里,你应该能够明白一开始那些“某某层”的概念了。

    所谓的“四层负载均衡”就是指工作在传输层上,基于 TCP/IP 协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡。

    所谓的“七层负载均衡”就是指工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。

     

    展开全文
  • OSI七层模型层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。 它是一个七层的、抽象的模型...

    OSI七层模型

    七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
    它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。

    在这里插入图片描述

    分层

    7. 应用层

    网络服务与最终用户的一个接口
    各种应用程序协议
    协议有:HTTP(超文本传输协议) FTP(文本传输协议) TFTP(简单文件传输协议) SMTP(简单邮件传输协议) SNMP(简单网络管理协议) DNS(域名系统) TELNET(远程终端协议) HTTPS(超文本传输安全协议) POP3(邮局协议版本3 ) DHCP(动态主机配置协议)

    6. 表示层

    数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
    信息的语法语义以及他们的关联,如加密解密、转换翻译、压缩解压
    格式有,JPEG、ASCll、EBCDIC、加密格式等 [2]
    如LPP(轻量级表示协议)

    5. 会话层

    建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
    不同机器上的用户之间建立及管理会话
    对应主机进程,指本地主机与远程主机正在进行的会话
    安全协议:SSL(安全套接字层协议)、TLS(安全传输层协议)

    4. 传输层

    定义传输数据的协议端口号,以及流控和差错校验。
    接受上一层数据,在必要的时候把数据进行切割,并将这些数据交给网络层,并保证这些数据段有效到达对端
    协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

    3. 网络层

    进行逻辑地址寻址,实现不同网络之间的路径选择。
    控制子网的运行,如逻辑编址、分组传输、路由选择
    协议有:ICMP(互联网控制信息协议) IGMP(组管理协议) IP(IPV4 IPV6)(互联网协议)
    安全协议、路由协议(vrrp虚拟路由冗余)

    2. 数据链路层

    建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
    将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
    物理寻址、同时将原始比特流转变为逻辑传输线路
    地址解析协议:ARP、PARP(反向地址转换协议)

    1. 物理层

    建立、维护、断开物理连接。(由底层网络定义协议)
    机械、电子、定时接口通信信道上的原始比特流传输
    TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。

    应用层需要关心应用程序的逻辑细节,而不是数据在网络中的传输活动。应用层其下三层则处理真正的通信细节。在 Internet 整个发展过程中的所有思想和着重点都以一种称为 RFC(Request For Comments)的文档格式存在。针对每一种特定的 TCP/IP 应用,有相应的 RFC
    一些典型的 TCP/IP 应用有 FTP、Telnet、SMTP、SNTP、REXEC、TFTP、LPD、SNMP、NFS、INETD 等。RFC 使一些基本相同的 TCP/IP 应用程序实现了标准化,从而使得不同厂家开发的应用程序可以互相通信

    TCP/IP四层模型

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议

    • TCP/IP是在网络的使用中的最基本的通信协议
    • TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定
    • TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。
    • TCP/IP传输协议是严格来说是一个四层的体系结构,应用层传输层网络层数据链路层都包含其中。

    这个图真的超详细,建议多看!!!!!
    在这里插入图片描述

    • 应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;
    • 传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;
    • 网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;
    • 数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。

    TCP/IP协议的组成

    TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,但是比较复杂,所以在TCP/IP协议中,它们被简化为了四个层次

    (1)应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在TCP/IP协议中,它们被合并为应用层一个层次
    (2)由于运输层和网络层在网络协议中的地位十分重要,所以在TCP/IP协议中它们被作为独立的两个层次
    (3)因为数据链路层和物理层的内容相差不多,所以在TCP/IP协议中它们被归并在网络接口层一个层次里。

    只有四层体系结构的TCP/IP协议,与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低
    在这里插入图片描述

    TCP/IP协议中的四个层次

    • 应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
      (1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议
      (2)应用层还能加密、解密、格式化数据
      (3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源
    • 运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用
    • 网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能
    • 网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路

    特点

    TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:
    (1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统。
    (2)独立于网络硬件系统,可以运行在广域网,更适合于互联网。
    (3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。
    (4)高层协议标准化,可以提供多种多样可靠网络服务

    通信过程及相关协议

    在网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。

    当源主机发出数据时,数据在源主机中从上层向下层传送。

    • 源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。
    • 传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层。
    • 网际层加上本层的控制信息,形成IP数据报,传给网络接口层。
    • 网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。
    展开全文
  • TCP/IP四层模型的理解

    千次阅读 多人点赞 2020-03-25 21:10:12
    TCP传输控制 TCP是面向连接的,可靠的传输协议 面向连接:当通信双方通过三次握手,并且在都在内部开辟了通信所需要的资源,例如SOCKET缓冲区等,这就算一个连接真正建立了。 整个过程 三次握手: 发送数据 次...

    应用层

    没什么好说的,优秀的文章很多

    传输层

    TCP传输控制层

    TCP是面向连接的,可靠的传输协议

    面向连接:当通信双方通过三次握手,并且在都在内部开辟了通信所需要的资源,例如SOCKET缓冲区等,这就算一个连接真正建立了。

    整个过程

    • 三次握手:三次握手
      还有一个就是为什么要进行三次握手,这也是一个非常常见的问题,因为tcp是可靠的稳定的连接,连接之前,通信的双方必须要先交流一些必要信息在发送数据之前,例如发送的数据的seq是多少,发送数据的win是多大。

      那么怎么要保证双方都能知道呢?
      假设现在我们只进行一次握手,那肯定是不行的,一次握手即使是这条消息百分之百发送成功的情况下,两个点之中的某一个会不知道对方发送能力,发送的seq。
      为什么不可以是两次握手?
      当客户端向服务器端发送一个连接请求时,由于某种原因长时间驻留在网络节点中,无法到达服务器端,由于TCP的超时重传机制,当客户端在特定的时间内没有收到服务器端的的确认应答时,就会重新向服务器端发送连接请求,该请求到达服务器端并建立连接,进行数据传输,当数据传输完成时,释放了TCP连接。
      若此时第一次的连接请求报文段延迟了一段时间后到达了服务器端,本来这是一个很早到达的失效的报文段,但是服务器端收到了该链接请求后误以为是客户端重新又发起了一次连接请求,于是服务器端发出确认应答报文段,并表示同意建立连接。如果没有第三次握手,由于服务器端发送了确认应答信息,则表示新的连接建立成功,但是客户端并没有向服务器端发送任何建立请求,客户端将忽略服务器端的确认报文,更不会发送任何请求或数据。而服务器端认为建立成功了,并一直在等待建立连接,直到超出计数器的设定值,则认为服务器端出现了异常,并关闭此链接。这个等待的过程中,浪费了服务器端的资源。
      如果是三次握手将不会出现不该建立的连接。
      三次握手中如果最后的一次握手信息发送失败了怎么办?那么如果 第三次握手中的ACK包丢失的情况下,客户端现在是已经认为连接已经建立了,Client 将会向 server端发送数据包了,但是现在server这边的连接还没有建立成功,client直接发送数据包过来,Server就不懂了,Server端将以 RST包响应,方能感知到Server的错误。
    • 发送数据
    • 四次挥手四次挥手
      为什么需要4次挥手呢?
      假设现在客户端一方向断开连接,客户端就需要发送一个断开连接的数据包。然后服务器收到数据包之后,因为可靠传输的原因,需要给客户端发送一个ACK包,确认自己收到了想断开连接的包。而不是说他服务器也同意断开连接,因为server这时候可能还有数据没发(注意是没发,而不是没收,TCP能保证消息到达的顺序性,所以既然server都确认你断开连接的包了,那么其他包肯定也就收到了),所以server还需要继续持有连接,继续发送。等到server也想断开连接的时候,server也发送一个断开连接的包,然后client也再给一个ack。这样能保证什么?保证通信双方都知道对方不在传输数据了,这时候释放资源。
      client收到server的确认断开连接的请求之后,不是立即断开连接,而是进入time_wait状态,等待2msl。 在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK(又是可靠连接)。为什么等待2msl就能确认server收到呢?其实是不能百分之百确认的,虽然说server会重发fin,但是如果fin也一直丢失怎么办?这种可能会存在,但是几率非常低,其实就算是一次丢包的几率都非常低,更别说ack和重发的fin都丢了。 所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。当然我们可以等待更长的时候来防止server没有收到ack,但是没有这个必要了已经(资源的角度来考虑),2MSL已经让server有了一次重发的机会,这样连续丢失几个包的概率实在是太低了。

    利用抓包命令来查看上面的通讯过程

    # yum install tcpdump   // 如果没有tcpdump,需要先安装这个程序
    # tcpdump -nn -i eth0 port 80
    -nn :不转换任何数值型ip和端口号到对应网站和协议
    -i	:指定要抓取的网卡,这里指定eth0。不知道有哪些网卡使用ifconfig查看
    port:指定要抓取的端口为80
    

    另起终端,用来发送网络请求

    # curl www.baidu.com	// 这个命令会进行一次完整的网络通信,且不会保持连接,会进行4次挥手断开连接,最终在原终端就能显示交互的数据了
    

    在这里插入图片描述

    1. 前三个包就是三次握手的包,然后就是客户端请求百度主页的包(http请求内容),其中Flags[P.]的含义是告诉对方快处理这个包,我没有包继续发了。

    2. 然后百度回复了一个确认包,也就是确认他已经收到了,这就是TCP可靠性的来源。

    3. 现在是第5条数据包了,百度开始响应我们的http请求了,给我们返回他的响应数据。然后我们收到了这个包,给了百度一个确认。TCP的两个点每次收到对方的数据的时候都会发回一个响应包,就是告诉对方自己已经收到了,这就是可靠性的一个重要来源

    4. 第五条的那个数据包没有将百度想要给我们响应内容一次发送完毕,因为每次发送的数据的大小是有限制的,所以可能需要分多个包来发完,这个大小是三次握手的时候双方沟通好的,就是win的大小,这个就是告诉对方,你给我发消息一次能发多大的数据包

    5. 我们又给了百度一个确认

    6. 数据交互完毕了,因为Curl是一次完整过的请求,其会进行四次挥手,开始进行四次挥手了。我们主动的向百度发送断开连接的请求

    显示当前主机当前有哪些TCP连接

    netstat -natp
    -n: 禁止将协议中的一些数字或者协议的名称,例如localhost,或者将80转换为http
    -a: 显示所有的连接
    -t: tcp连接
    -p:	显示哪个进程持有这个链接
    

    网络层

    查看某个网卡的配置信息

    vim /etc/sysconfig/network-scripts/ifcfg-eth0	// 查看eth0这个网卡的配置 
    

    在这里插入图片描述
    这就是这个网卡的配置

    • dhcp:表示该网卡的ip地址是通过DHCP服务动态获取
    • ONBOOT:自动启动

    查看路由表

    # route -n
    

    在这里插入图片描述
    出现了这样的结果,这个结果是什么含义?
    每一行代表一个路由规则,决定我们的数据包如何发出去,发到哪去。Metric代表的是跃点的数量,一个跃点代表一个路由器,当有多个路由规则匹配的时候,一系统会优先选择跃点少的路径进行发送。

    Use Iface代表这条路由信息是哪个网卡的,如果匹配了对用的路由信息,就从该条路由信息的网卡将数据发送出去,一般我们加入新的网卡(网卡工作在数据链路层,网卡mac地址),系统都会默认的为我们加一条路由规则,当然我们也可以手动添加。

    Genmask,也就是掩码,假如我们现在要发送数据到162.13.12.3,如何决定怎么走?首先用Genmask与之进行与操作,得到的结果再与Destination进行比较,相同就代表这个链路可以到达目标地址,就会利用网卡将数据发送到Gateway(网关)让其继续进行数据的传递,也就是到达了下一跳,这样就进行了一次路由。这里明显如果我们想到达162.13.12.3,就是使用的第二条链路规则,因为其与操作之后结果相同

    这种掩码和目标地址是0.0.0.0这种形式的一般是被叫做默认路由,任何数据包通过这条路由规则都能匹配成功,一般的家庭电脑这条路由都是指向公网的。
    如果我们要在局域网中添加文件存储服务,就需要手动的添加一条路由规则,将指定的ip执行我们的文件服务器

    数据链路层

    上面我们说到了网关,我们将数据发送到网关,也就是下一跳。但是问题来了,我们如何发送?ip地址写谁?写我们要到达的目标的ip?还是网关的ip?其实是写的目标的ip地址。那要如何发送到网关呢?这要交给数据链路层来进行操作了,数据链路层利用mac地址来进行通信。利用**arp**协议在已知ip的情况下获取到对应的mac地址。现在已知网关的ip地址,就可以获取到网关的mac地址,然后在链路层上进行发送。又在网络层的数据外部套上一层链路层中的数据,包含了源mac地址(主机的mac)和目标mac地址(网关的mac),当然不只包含这两个数据。然后数据发送到网关之后,把链路层的数据去掉,查看网络层的数据,发现ip地址不是自己,其又会查询其自己的路由表,找到了下一跳。又获取下一跳的mac地址,又套上一层数据链路层的数据,其中包含源mac地址(此时就是网关的mac了)和目标mac地址(此时就是下一跳的mac)了,就这样一直寻找下一条,直到某个位置拆开链路层的数据包之后发现网络层的数据中的ip是自己,这就到达了目标位置。

    mac地址,每一次跳跃都会发生变化

    mac地址每次跳跃都会改变,那源ip地址和目标ip地址是否会变呢?

    这个问题的答案是不一定的,要看场景,我们一般的家庭路由器上网的时候,用户的ip地址一般都是192.168.2.xxx这种形式的,那我们在网络上通信肯定不可能使用这种ip地址啊,这样岂不是会有很多相同的源ip地址在网络上进行请求,怎么区分谁是谁呢?所以说,我们一般的家庭路由器,源ip地址是会改变的,其会被运营商变成一个公网的ip地址,这样响应数据的时候才能正确的路由回来。但是如果你本身就是公网ip,那就不会变化了。这就是看场景。

    ARP协议实验

    同样打开两个终端

    // 第一个终端执行
    # tcpdump -nn -i eth0 port 80 or arp	// 监听80端口或者是arp协议的请求
    
    // 第二个终端执行
    # arp -d 192.168.163.2 && curl www.baidu.com	
    // 第一部分表示删除192.168.163.2的mac地址记录,这样又需要重新去请求该ip的mac地址,这个IP地址是网关的ip地址,这个就是删除了网关的mac地址记录
    // 第二部分就是请求百度 ,因为前一部分删除了网关的mac地址记录,这里要向百度发送请求肯定又需要网关的mac地址,我们也就能看到对应的获取mac地址的arp请求
    

    在第一个终端我们就能看到抓到的记录
    在这里插入图片描述
    可以看到,最开始的这条arp请求就是用来获取192.168.163.128的mac地址的,这个请求是以广播的形式发出去的,然后192.168.163.128收到了这个广播并回复了他。这就是一个arp请求的形式

    注意:arp -d 192.168.163.2 && curl www.baidu.com这个两个命令必须一起执行,因为如果如果先执行第一部分再执行第二部分,可能抓包记录中不会有arp请求,因为其可能会周期性的自动获取某个ip对应的mac,可能在你抓包之前,自动获取了,192.168.163.2 的mac地址就已经有了,当然也就不会发送arp请求了


    新的问题,运营商如何区分那么多宽带用户

    举个例子,比如我们现在使用没有公网ip的家庭路由器上网,我们现在请求百度,我们的ip地址是192.168.1.2,数据发送出去之后,ip地址会被运营商变成公网ip,然后成功的将数据发送到了百度,但是百度响应数据的时候响应到的是运营商啊,因为请求的源ip地址被运营商变成了他的ip,那运营商如何将数据发送给我们?这就要依赖另外一个技术了:端口映射

    内网和外网之间的通信(端口映射)

    windows下查看路由表
    在这里插入图片描述
    看起来稍微与linux的有所区别,但都是差不多的,这里的接口就与linux下的网卡是一个意思,就决定从哪个口出去。在链路上就表示不用经过网关,直接发送到目标网络。而带有网关地址的,则需要将数据包发送到网关,再由网关进行转发

    展开全文
  • TCP/IP四层模型简单介绍

    千次阅读 2018-11-21 17:23:55
    OSI七参考模型 OSI(Open System Interconnection 开放系统互联)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。 OSI分为七 应用:为用户提供服务和协议 表示:...

    OSI七层参考模型

    OSI(Open System Interconnection 开放系统互联)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
    OSI分为七层
    应用层:为用户提供服务和协议
    表示层:设备固有数据格式和网络标准数据格式的转换
    会话层:通信的管理,负责建立和断开通信连接
    传输层:管理两个节点之间的数据传输,负责数据的可靠传输
    网络层:负责地址管理,路由选择
    数据链路层:相邻设备之间的数据传输,差错控制等控制
    物理层:关电信号的传递
    OSI是一个理论上的网络通信模型,TCP/IP则是实际运行的网络协议。

    TCP/IP四层模型

    TCP/IP协议族分为四层,分别为应用层,传输层,网络层,链路层
    应用层: 负责程序之间的数据沟通,应用层常用知名协议http超文本传输协议、Telnet网络远程访问协议、ftp文件传输协议、SMTP简单邮件传输协议,SNMP简单网络管理协议,同时可以自己定义协议。
    传输层:为两台主机的应用程序之间提供端到端的数据传输,提供了两种不同的服务,面向连接,可靠的数据流TCP传输控制协议,和无连接,不可靠面向数据报传输的UDP用户数据报协议。
    网络层:网络层主要提供地址管理,和路由选择,TCP/IP协议族中,网络层协议包括IP协议(网际协议)、ICMP (Internet控制报文协议),IGMP (Internet 组管理协议)。
    链路层:链路层主要提供相邻设备之间的数据传输, 链路层主要实现三个目的:接受和发送ip数据包、接受发送ARP(地址解析协议)请求(获取目标主机的MAC地址) 、为发送RARP(逆地址解析协议,针对无盘机)请求和接收RARP应答,另外根据网络中硬件的不同,链路层有不同的协议,如以太网,令牌环网。

    TCP/IP协议通信过程

    局域网中ftp协议通信过程(忽略物理层光电信号的传输)
    来自TCP/IP协议详解
    发送端数据从应用层到链路层的过程为数据的封装,对端即接收端对数据进行分用

    封装

    应用程序需要传递信息时需要将传递的内容放入协议栈中,逐层添加每一层的控制信息,直到物理层转换比特流发送添加控制信息这个过程成为封装。
    来自TCP/IP协议详解
    tcp交给ip的数据包成为TCP报文段或者TCP段,IP递交给链入层的数据单元为IP数据报,链路层形成的数据单元为以太网桢。

    分用

    当主机拿到以太网桢进行解析的过程为分用,根据以太网帧的头部中协议类型可以判定是那个协议的数据包,另外以太网桢具有固定的头部和尾部大小,分离头部和尾部得到对应协议的数据包进行递交,假设为IP 协议,IP协议拿到数据包,根据IP数据报中头部中首部长度进行分离,同时根据服务类型判定上层协议类型进行递交,假设为TCP协议,当TCP协议拿到TCP报文段同样根据报文头中的首部长度进行分离,同时根据端口号进行数据的递交,应用层拿到数据通过自己定义的数据格式进行解析。这整个过程成为分用。另外这个过程还涉及到其他的将在后面解释协议时进行讲解如IP 分片,TCP 的可靠传输,TCP分组等很多其他过程。
    来自TCP/IP协议详解

    参考:《TCP/IP详解卷1:协议》 LawrenceBerkeley

    展开全文
  • OSI七层模型和TCP/IP四层模型概述OSI七层模型和TCP/IP四层模型的对应二者的差别数据封装过程数据传输过程协议栈及概念应用层传输层网络层数据链路层物理层 概述 ISO是国际标准化组织, 该组织对网络体系结构进行了...
  • TCP/IP四层模型(协议簇)各层作用

    千次阅读 2020-06-16 16:11:24
    OSI七层模型是国际标准,分为七层,概念清晰,但却过于复杂,由此演变出了一个事实标准即TCP/IP四层模型,这个模型将应用层、表示层、会话层合并为一层应用层,将数据链路层、物理层合并为链路层。 OSI七层模型 ...
  • TCP/IP(八)之总结TCP/IP四层模型

    万次阅读 2017-10-01 18:28:10
    在这里有一个问题,有的书上说TCP/IP是四层有的却说是五层。其实这个问题我也上网查了一下... 我们探讨一下为什么ISO七层模型不适用而大部分都是使用的是TCP/IP四层模型呀?  OSI的七层协议体系结构的概念清楚,
  • ISO/OSI七层协议模型、TCP/IP四层模型

    千次阅读 2021-02-26 13:44:33
    ISO/OSI七层协议模型、TCP/IP四层模型网络七层架构(ISO/OSI协议参考模型)物理层数据链路层网络层传输层会话层表示层应用层TCP/IP 原理网络访问层(Network Access Layer) / 网络接口层 / 数据链路层网络层(Internet ...
  • TCP/IP四层模型和OSI七层模型的概念(模型分层的作用是什么) 一、总结 一句话总结: 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错; 在各层分别定义标准接口,使具备相同...
  • OSI七层模型和TCP/IP四层模型

    万次阅读 多人点赞 2018-07-08 12:59:28
    2、TCP/IP协议栈是美国国防部高级研究计划局计算机网(ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部赞助的研究网络。最初,它只连接了美国境内的所大学。随后的几年中,它通过租用的电话线...
  • TCP/IP四层模型详解

    千次阅读 2019-07-26 22:20:15
    传输2.1端口号2.2UDP协议3.网络4.数据链路 1.应用 程序员写的满足我们日常需求的网络程序,都是在应用。 1.1HTTP协议的认识 应用协议是我们程序员自己定义的,大佬们定义的HTTP(超文本传输协议)...
  • TCP/IP四层模型与OSI参考模型

    千次阅读 2018-08-16 11:24:46
    TCP/IP四层模型: 1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡 2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。 3.运输层:主要为两台主机...
  • OSI七层模型和tcp/ip四层模型的区别

    千次阅读 2019-06-28 18:03:04
    OSI体系是七层协议,而TCP/IP体系是四层协议, 1.OSI七层模型是国际标准化组织ISo制定的开放系统互连基本参考模型,是法律上的国际标准 而TCP/IP是事实上的国际标准 ... TCP/IP四层协议分别为网络接口层...
  • TCP/IP四层模型 在了解TCP/IP四层模型前,我们先来了解一下OSI七层结构。 OSI七层模型 虽然OSI七层模型划分的很完美,但是在实际应用当中有一些层的工作是重复的,所以出现了更贴近实际的TCP/IP四层模型TCP/IP四...
  • TCP/IP四层模型各层主要协议详述

    万次阅读 多人点赞 2019-08-02 00:46:00
    1、一张表理清 OSI七层和TCP/IP四层的关系 2、TCP/IP模型 (1)物理层 物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,确保原始的数据可在各种物理...
  • TCP/IP协议族 详解(TCP/IP四层模型、OSI七层模型)

    千次阅读 多人点赞 2018-04-12 21:53:09
    TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(英语:TCP/IP ...
  • 1.每功能 2.每核心协议 3,每基本数据单元(即报文格式,每个字段什么...2.网络地址:ip 原节点到目的节点的信息传输 3.传输: 建立进程到进程的连接,进程间传输 socket套接字—端到端后的进程寻找: sock..
  • 应用:负责应用程序之间的数据交流 http协议:超文本传输协议 url:统一资源定位符,在网络中唯一定义一份资源。 完整url组成:协议方案名称://用户名:密码@服务器地址:端口号/请求资源路径?查询字符串#片段标识符 ...
  • TCP/IP四层模型及各层协议首部详述

    万次阅读 多人点赞 2018-01-17 15:12:35
    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。 1.2 OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和...
  • OSI七层协议模型和TCP/IP四层模型

    万次阅读 多人点赞 2017-09-14 17:40:26
    TCP/IP 协议栈及 OSI 参考模型详解:https://blog.csdn.net/guobing19871024/article/details/79415846 OSI七层网络模型,TCP/IP四层网络模型与网络协议解析:...[网络必学]TCP/IP四层模型讲解...
  • 网络分层模型OSI和TCP/IP四层模型

    万次阅读 2018-08-12 08:17:12
    网络分层模型OSI和TCP/IP四层模型 网络分层模型OSI和TCP/IP四层模型 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准...
  • TCP/IP四层模型 <span class="link_postdate">2016-07-25 10:38</span> <span class="link_view
  • 本文将首先介绍TCP/IP四层模型,及其和OSI参考模型的对应关系。接着,介绍TCP/IP四层模型中设计到的主要协议。 在TCP/IP协议中,将OSI模型的七层架构简化成了四层,如下图所示。 在上图中,同时给出了TCP/IP四层...
  • ISO/OSI七层模型与TCP/IP四层模型

    千次阅读 2018-04-27 17:49:47
    ISO/OSI的模型 知识点梳理 1.1-4是实际传输数据的,5-7是为用户提供服务的 2.单位比特是计算机中最小的数据单位。一比特是单个的二进制数值,0或1;比特是最小单位 字节是比特的集合 1字节=8比特 3.帧是该机器...
  • 如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。 图2-1 TCP/IP参考模型  2.1 TCP/IP参考模型的层次结构  TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects
  • TCP/IP参考模型    ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,886
精华内容 35,154
关键字:

tcp/ip四层模型