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响应以后,就可以将网页显示出来,完成一次网络通信。
  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/gyh04541/p/6891141.html
Copyright © 2011-2022 走看看