zoukankan      html  css  js  c++  java
  • OSI七层&TCP&IP协议

    OSI七层:

    OSI七层与ICP/IP概念层的对应:

     

    ICP/IP概念层上的网络设备:

     

    IPInternet Protocol网际协议):计算机之间的通信

    IP(网络协议)位于网络层,作用是把各种数据包传送给对方,而要保证确实传送到对方那里,则需要满足各类条件,其中两个重要的条件是IP地址和MAC地址。IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址。IP地址和MAC地址进行配对,IP地址可变换,但MAC地址基本上不会更改。这里我为什么说基本不会改变呢?因为目前我们可以通过软件修改,也就是用软件来修改MAC地址。IP地址是可以和MAC地址进行配对的。

    使用ARP协议凭借MAC地址进行通信

    IP间的通信依赖MAC地址。网络中,处于同一局域网内的情况很少,通常是经过多台计算机和网络设备中转才能连接到对方。中转时,会利用下一站设备的MAC地址来搜索下一个中转目标。这时,会采用ARP协议(Address Resolution Protocol),ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查对应处的MAC地址。

    在网络上,通信的双方通常都是要经过多台计算机或者网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时我们就是靠ARP协议来进行处理。

    IP是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP地址,用来在internet上识别这台计算机。IP负责在因特网上发送和接受数据包。通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至它的目的地。

    IP协议仅仅是允许计算机相互发消息,但它不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP

    TCP协议(Transmission Control Protocol传输控制协议):应用程序之间的通信

    TCP协议位于传输层,提供可靠地字节流服务,即为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

    TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCPIP地址之上引端口(Port,它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留。而端口号是总所周知的。

    服务或守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于wwwHTTP通信流出现在80端口上。

    当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。当双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信,占用两个计算机之间整个的通信线路。TCP用于应用程序到网络的数据传输控制。TCP负责在数据传送之前将它们分割为IP包,然后在它们到达的时候将它们重组。
    建立起一个TCP连接需要经过“三次握手” 

    第一次握手:客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

    第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK,此时服务器进入SYN_RECV状态; 

    第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开).

    TCP/IP就是TCPIP两个协议在一起协同工作,有上下层次的关系。

    TCP负责应用软件(比如你的浏览器)和网络软件之间的通信。IP负责计算机之间的通信。TCP负责将数据分割并装入IP包,IP负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误和其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。

    HTTPTCPIPDNS的关系:

     

    我来拿我的博客来举个例子:

    首先是,我想访问网站,将域名发送给DNS去解析,DNS解析后将网站的IP地址返回给客户端,然后通过IP地址发起HTTP请求。HTTP此时的作用是 生成针对目标WEB服务器(我们这里指的是网站的服务器)的HTTP请求报文,然后将请求报文传送给传输层,此时为了方便通信,TCP会将HTTP请求报文  分割成报文段,这些报文段会有一个序号,这里的报文段哪一个先发送哪一个先到达,它们是按序传送的。只要建立起TCP连接,客户端与服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序。接着到了网络层,此时IP协议的职责是,搜索对方的地址,一边中转一边传送。然后找到了服务器的位置,此时服务器的传输层中 TCP的职责是  接收到对方传送过来的报文段后,对其进行重组,这里的重组是按序号进行重组的。然后到了服务器的应用层,HTTP会对客户端请求的内容进行处理。处理完后,服务器同样会利用TCP/IP通信协议向客户端进行回传响应。最后客户端收到响应后,将内容输出页面显示。即完成了一次HTTP事务。

  • 相关阅读:
    PHP
    思科模拟器
    路由器
    服务器
    Windows Server 2008 笔记【瞎写】
    Day1 T3 数列
    java中自定义excel模板并且填充内容
    springMVC接收值list时,超过256出现IndexOutOfBoundsException
    java将日期转换成周几
    两个tomcat配置各自的SSL证书(前后端分离)
  • 原文地址:https://www.cnblogs.com/wbxjiayou/p/5157444.html
Copyright © 2011-2022 走看看