网络通讯协议

什么是互联网

  网:由多个节点相互连接组成  eg:渔网、蜘蛛网

  计算机互联网:由多台计算机通过某种介质相互连接而组成

         互联网之所以存在就是为了能让信息共享

网络编程

  网络编程:指的是编写基于网络的应用程序

  学习网络编程的目的:开发出一款可以利用网络来传输数据的应用程序

            最终目的是就是要编写一个基于C/S结构的应用程序

cs结构

  建立网络至少需要两台计算机,然后使用网络来传输数据

  1、网络必须联通

  2、在访问数据的一方,必须安装用于访问数据的应用程序

      该应用程序称之为客户端应用程序(client)

     在需要提供数据的一方,必须安装用于共享数据的应用程序

      该应用程序称之为服务端应用程序(server)

       简写为C/S:

      例如:qq   就是一个客户端   服务器在腾讯公司

还有一个B/S    Browser浏览器/Server

  该结构下传输的数据都是HTML文本数据

通讯必备的两个条件

  1、物理传播介质(双绞线  光纤  无线电波)

  2、通讯协议(掌握的重点)

通讯协议

  是由发送方和接收方共同商定的一套规范

#1、制定协议的目的

     为了通讯双方能够正确解析数据

     例如 国内通讯:双方都用普通话

        国际通讯:双方都用英语

#2、OSI七层模型的由来

    早些年,一些生产电脑的厂商的设备都不兼容(无法通信),每个公司都有着自己的一套规范,

    只能自己设备之间互相能够通信

    于是国际标准组织就提供了一套开放系统互联模型  OSI  作为世界的互联网的统一标准

OSI七层模型

  OSI七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

  经过人们长时间的磨合,发现可以把前三层统一归类为应用层

  五层模型:应用层、传输层、网络层、数据链路层、物理层

物理层

  通过物理介质建立物理连接,可以发送10101001 的二进制数据

  但是单纯的二进制数据无法理解,必须明确一次性收几个,每一段二进制是什么含义

数据链路层

以太网(Ethernet)协议工作在数据链路层

#1、数据如何分组(数据的格式)

  每次发送一个数据帧  每个数据帧包含  head和data

  head:18byte  data:46-1500byte

head data

  

head又包含目的地址、源地址

目标MAC 源MAC 其他 data

  

数据帧的最大长度为1518,如果数据长度超过将被分片

#2、MAC地址

  每一台计算机想要联网就必须要具备网卡

  每个网卡必然具备一个全球唯一的MAC地址

  MAC地址可以定位到任意一台计算机,但是如果提前不清楚目标的MAC地址,

  那就需要广播,来确定网口和MAC地址的对应关系

有了链路层  理论上全世界的计算机就能连到同一个网络了,但是我们不可能将所有计算机设备连接到同一个交换机上

#3、广播风暴

  当很多同一网络中的计算机同时发送广播,就会形成广播风暴,交换机承受不住高负荷,导致网络瘫痪

网络层

  ip协议工作在网络层 Internet Protocol Address

  ip协议规定  每一个计算机设备要联网,必须分配一个ip地址

  ip地址是一个逻辑地址  不是固定的,在家和在学校获得的ip地址就不一样

#1、ip地址的格式

  由4段3位的十进制组成(点分十进制)

  0.0.0.0  -  255.255.255.255

  每个局域网第一个ip是网络地址(主机位是0)  最后一个ip是广播地址(主机位是255)

#2、网络位与主机位

  ip地址分为两个部分,网络位与主机位

  网络位:主要用来表示所处的局域网地址

  主机位:主要用来表示你这台电脑的具体位置

  区分网络位与主机位主要通过子网掩码

  子网掩码:和ip地址的形式一样,子网掩码位1对应的就是网络位,0对应的就是主机位

#3、ARP地址解析协议(了解)

  会根据你发的目标ip地址去找到对应目标的MAC地址,从而确保你的数据封包到数据链路层可以正常进行

总结:

  ip地址分为网络号和主机号,通过网络号可以定位到某一个局域网,再通过主机号定位到某一个计算机

  这样一来就可以通过ip定位到全球任意一台计算机

源MAC 目标MAC 源IP 目标IP data

   数据包

      

    以太头部        ip头部

传输层

  TCP/UDP工作在这一层

  传输层要求每一个应用程序捆绑一个端口号

  端口号是一个整数  取值范围 0-65535  0-1023端口是系统保留的,不建议使用,其他都可以用

  至此  可以通过ip+端口号定位全球某一台计算机上的某一个应用程序

TCP协议(传输控制协议)

  可靠传输协议:就是在发送完数据之后,必须等待接收方返回回复消息,该数据才算发送成功

  如果对方在一段时间内没有返回,就会再次发送数据,超限制次数,就判定连接丢失(超时)

  基于链接的传输:

    要发送数据必须先建立链接,简单来说就是找一条可以到达对方的路,

    如何选择最佳路径由路由协议来控制

#1、建立连接需要三次握手:

    由于TCP要实现双向通信,为了防止单向通信的情况,A必须要确认B和自己同步,B也要确认A和自己同步

  三次握手成功之后就表示链接建立成功了,只能表示这三次数据传输是可靠的,并不能保障后续的传输数据的可靠

  TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时间内没有收到

  回复信息,会自动重新发送,如果重试的次数多,则表示链接可能已经中断了

#2、断开链接需要四次挥手:

  1、客户端先发送断开链接请求

  2、服务端确认请求,这样客户端到服务端的链接就中断了

  3、当服务器发完最后的数据后,就向客户端发送断开链接请求

  4、客户端确认断开信息,这样双向链接就全部断开了

  四次挥手的目的主要是保证双方的数据传输已经全部完成,同样是为了保障数据的完整性

#3、优点:

  保证传输可靠,数据完整

#4、缺点:

  因为需要传输确认信息,所以对网络消耗较大,效率相对较低

#5、应用场景:

  重要的数据,在线支付

UDP协议(用户数据报协议)

  不可靠传输,UDP只管发送,不管对方是否收到

优点:

  传输效率比TCP高

缺点:

  传输不可靠

应用场景:

  对速度要求高,对完整性要求低的,例如对战游戏、视频通话

应用层

原文地址:https://www.cnblogs.com/hesujian/p/10931921.html