day 24

作者: 个中秘密 | 来源:发表于2019-04-07 14:41 被阅读0次

    5、局域网与局域网之间的通信(路由器)

    5.1、路由器科普

    路由表来记录IP地址 ,IP地址(逻辑地址),实现主机之间的通讯。
    

    三、ISO国际一个认证规范

    OSI 7层网络模型

    image.png

    物理层 常见的标准RJ-11(水晶头、塑料、接触片镀金、镀铜、网线)
    数据链路层 常见的标准MAC地址 二级网络(交换机)
    网络层 标准IP地址 三层网络 (路由器)
    传输层 TCP稳定传输(ssh服务) UDP传输
    会话层 LinuxM C/ Unix C 语言编程 控制包数据
    表示层 文件的格式、类型、加密的处理
    应用层 操作系统上装的程序 (标准HTTP 80、TTPS 443、 FTP 21 、SSH22 POP/SMTP)

    1、指定它的意义?

    2、要指定一个国际通用的标准

    1、物理层

    常见的标准 RJ11 RJ45 买厂商提供RJ-45接口标准的水晶头
    水晶头 水晶/塑料/镀金的/纯铜/ 网线

    2、数据链路层 常见的标准MAC地址 二级网络 交换机
    3、标准IP地址 路由器 三层网络 IP地址 公网IP 相当于家庭地址
    192.168.0.1
    192.168.1.1
    192.168.1.2
    
    4、传输层 TCP稳定传输 UDP传输的方式 ssh服务

    开发人员(程序员)

    5、会话层 Linux C/UNIX C语言编程 控制报数据
    6、表示层 文件的格式 类型 PNG JPEG MPEG AVI MKV MP4 TS等、加密的处理。
    7、应用层 操作系统上装的程序。

    自己开发
    标准 HTTP 80 HTTPS 443 FTP SSH(22) POP/SMTP

    OSI 7层模型中数据的传输结构
    应用层  Hello wrold  (表示层  TEXT  会话层)
    传输层:报文消息头  TCP   字段segment
    网络层:IP地址的报文的消息头  包
    链路层:添加一个以太信息
    物理层:网卡  01010101  电信号
    

    7层模型封包的一个过程


    image.png

    7层模型解包的一个过程
    物理层 网卡 电信号 010101 2进制的信息
    链路层 以太信息
    网络层 IP
    传输层 TCP
    会话层 SOCKET
    表示层 类型 TEXT JPEG PNG等
    应用层 想操作系统要数据 Hello World

    TCP/IP 5层模型
    (应用层 + 表示层 + 会话层)==>应用层
    传输层 网络层 数据链路层 物理层

    TCP/IP协议

    IP协议是TCP/IP协议中最重要的协议,它为TCPUDP ICMP等协议提供传输的通路。IP层主要目的是提供子网互联,形成较大的网络,使不同的子网之间能传输数据

    IP层主要的作用

    3、掌握TCP/IP协议建立连接3次握手的过程
    3.1 IP协议是TCP/IP协议中最重要的协议,它为TCPUDP ICMP等协议提供传输的通路。IP层主要目的是提供子网互联,形成较大的网络,使不同的子网之间能传输数据。IP层主要的作用1、数据传送将数据从一个主机传输到另一个主机2、寻址根据子网划分和IP地址,发现正确的目的主机地址3、路由选择选择数据在互联网上的传送路径。4、数据保温的分段将数据进行分段发送和接收兵组装。

    三次握手

    两个序号和三个标志位:

      (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
      ( 2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
      (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
      (A)URG:紧急指针(urgent pointer)有效。
      (B)ACK:确认序号有效。
      (C)PSH:接收方应该尽快将这个报文交给应用层。
      (D)RST:重置连接。
      (E)SYN:发起一个新连接。
      (F)FIN:释放一个连接。
    
     需要注意的是:
      (A)不要将确认序号ack与标志位中的ACK搞混了。
      (B)确认方ack=发起方req+1,两端配对。
    
    image.png

    在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,

    因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;

    第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。

    四次挥手:

    由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,
    
    收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。
    
    首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
    (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
    (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
    (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
    
    image.png

    为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

    这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

    为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

    不应该是为了防止B发送的FIN=1的包的丢失,因为如果A没有收到来自B的释放连接请求,是不会进入TIME-WAIT状态的。

    所以正确的解释是:A发送的确认释放连接信息B没有收到,这时候B会再次发送一个FIN=1的释放连接请求,而这个时候A还处于TIME-WAIT,所以可以再次发送确认信息

    相关文章

      网友评论

          本文标题:day 24

          本文链接:https://www.haomeiwen.com/subject/vazibqtx.html