zoukankan      html  css  js  c++  java
  • 网络基础--网络通信

    一、互联网协议
        所谓互联网协议就是计算机与计算机之间的通信,约定好之间通信的规则和标准,使之能够互相交流,这些规则就是互联网协议。
        因为在计算机之间在不同的地域,使用不同的语言,造成信息无法传递,就需要计算机之间共同遵守这些规定和标准,不分地域和语言就能交流通信。
        如果没有这些协议,就没有现在的网络,每个人的计算机都是孤立的,资源都无法共享。
    二、OSI(开放式通信系统互联参考模型)五层模型
         从底层硬件开始,依次向上物理层,数据链路层,网络层,传输层,应用层,
        1.  物理层:通过光缆,网线,无线网络,双电缆 ,绞线等建立物理连接,发送基于电器特征的高低电压(电信号),高压电代表1,低压电代表0;
        2. 数据链路层:单独的发送高低电没有意义,必须规定多少组的电信号一组,代表什么意思,就是规定了电信号的分组方式,
            在这一层,有统一的协议:以太网协议(Ethernet),每一组电信号就是一个数据包,称为帧;
            每帧包含报头(head)和数据(data)部分,
            head包含:18个字节(固定),
                         发送者(源地址)6个字节,
                        接受者(目标地址)6个字节,
                        数据部分6个字节,
             data包含:最短46个字节,最长1500个字节,
             mac地址:在head里,包含了源地址和目标地址,在每台计算机里通信的端口都有网卡,发送端和接收端的地址就是网卡的地址,既Mac地址,
                      每个网卡在出厂时Mac地址都已经烧制在网卡里,都是世界唯一的地址,共48位2进制,前12位由16进制表示(前6位表示厂商,后6位表示生产流水线号)
             广播:有Mac地址,在同一网络内,通过ARP协议就可以通信,通过广播的方式,
        3.网络层
            在数据链路层,因为是广播的方式进行通信,造成在这个局域网里,所有的计算机都能收到数据包,而真正要接受的只有一台计算机,造成效率低下,并且还不能与局域网以外的计算机通信,
            网络层功能:网络层的功能就是引入新的地址用于区分广播域和子网,即网络地址IP;
            IP 地址:范围在0.0.0.0到255.255.255.255,由32位2进制表示,同常是4段十进制表示,
            IP地址由2部分组成,网络部分标识子网,主机部分部分标识主机,单独从IP地址无法判断计算机是否在同一网络里,需要子网掩码来判断,
            子网掩码:标识一个子网的特征参数,也是一个32位的2进制,用10进制表示,网络部分全是1,主机部分全是0,
             知道IP地址和子网掩码,我们就能判断两个IP地址是否在同一个子网里,通过AND运算(对应为都是1,得到是1,其余只要对应为不同就是0)看结果是否相同,相同则是属于同一子网,
           IP地址的作用,就是为每台计算机分配唯一的IP地址,同时判断这些IP地址是否属于同一个子网,
           IP数据包,包含在以太网的data部分里,IP数据包也包含了head和data两个部分,
           head包含20到60个字节,data包含65515个字节,以太网data部分最多只有1500个字节,如果IP数据包超出,需要把以太网分割成几个数据包,分开发送,
          ARP协议:地址解析协议,在osi模型中分为七层,在数据链路层中是通过Mac地址传输的,获取自身的Mac地址很容易,但要知道对方主机的Mac地址,就要通过ARP协议,本质就是网络IP地址映射为Mac地址,过程:1.根据IP地址和子网掩码判断是否处于同一网络,2.发送数据包,在以太网内传输,所有主机拆开包后,与自己的IP地址匹配,就是响应,返回自己的Mac地址,
          4.传输层
           建立端口到端口的通信,是面向连接,可靠的通信协议,端口的范围:0--65535,0--1023被系统占用,
           tcp连接的建立过程,
           1.client向server发送建立连接 的请求(tcp报文段,syn=1,seq=x),等待server的确认,
           2.server收到请求,如果同意建立连接,给client发送tcp报文(sxn=1,sep=y),ack =1,sep=x+1是client确认收到的tcp报文,并等待client确认已经收到报文,
           3.client确认收到报文后,再次向server发送tcp报文, 确认收到server的报文,通信连接建立。
           tcp断开连接的过程,
           tcp是双工传递(数据在两个方向上传递),
           1.tcp连接的client发送fin为1,提出tcp连接中止,
           2.server收到fin后,确认在这个方向上连接将关闭,
           3.有server再次提出关闭tcp连接的请求,发送fin为1,
           4.client收到请求,连接关闭。
    五、应用层
          在应用层,都是程序,数据之间的通信,规定的是程序的数据格式,有email,www,FTP等各种数据格式,必须有协议规定这些程序的数据格式, 这些协议就构成了应用层,
         socket是应用层与传输层之间的一个抽象层,为两个程序通过一个双向的通信实现数据交换,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
     
    六、上网流程
        1. 获得本机的基本信息,
        IP地址,
        子网掩码,
        网关,
        DNS域名解析,
        2.进入浏览器,输入URL地址,
        3.DNS解析域名
        4.获得http的内容,包含在tcp数据包中,
        5.TCP数据包需要设置端口,http端口的接收方,发送方的端口随机生成,
        6.IP协议包含在tcp协议内,IP数据包设置双方的IP地址,
        7.以太网协议,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关x.x.x.x的MAC地址(通过ARP协议得到)
        8. 服务器端响应,经过多个网关的转发,服务器收到IP地址,收到了这四个以太网数据包,根据IP标头的序号,服务器将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”,接着做出”HTTP响应”,再用TCP协议发回来,本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。
  • 相关阅读:
    WPF框架MVVM简单例子
    向WPF的Grid里面增加控件
    静态资源(StaticResource)和动态资源(DynamicResource)
    WPF中INotifyPropertyChanged用法与数据绑定
    wpf 绑定数据无法更新ui控件可能存在的问题
    C#调用Resources.resx资源文件中的资源
    C# 委托的理解
    Codeforces 524E Rooks and Rectangles 线段树
    Codeforces 1000F One Occurrence 主席树|| 离线+线段树
    GYM 101673 A
  • 原文地址:https://www.cnblogs.com/gyh04541/p/6891141.html
Copyright © 2011-2022 走看看