• 8.6 网络编程7层协议


    一。软件开发架构

      在所有软件中有两种结构模式

      1.c/s架构(client/server)

      c代表的是客户端

      s代表的是服务端

      2.b/s架构(browser/server)

      b代表的是浏览器

      s代表的是服务端

      当然,bs架构的本质也是cs架构。

      在现在手机中,软件中多有网站的链接等等,是c/s中b/s的体现。

    二。七层协议

      应用层

      表示层

      会话层

      传输层

      网络层

      数据链路层

      物理层

      五层协议

      应用层

      传输层

      网络层

      数据链路层

      物理连接层

    三。各个层的分析

      1.物理连接层

      在这一层,通常是指电信号的传输,以010101001010这种二进制的数据进行传输的的物理层。

      2.数据链路层

      这一层的协议表示的是:

      1规定了电信号的分组方式

      2.规定了任何一台接入互联网的计算机都有一块网卡,每一块网卡上,都刻有世界上独一无二的编号。

      是由12位16进制数组成,前6位是厂商编号,后六位是流水线编号。

      这十二位数共同组成了mac地址。

      这种协议被称为‘以太网协议’

      以太网协议通信的特点:

      通信广播。就是当在局域网中以以太网进行协议传输,当用户1需要对用户2进行访问时,需要广播其请求,使得在其局域网中的所有人都收到这个请求,但是只有用户2能够响应这个访问,然后与之建立连接。

      在局域网中,使用交换机进行集合,各个pc端通过交换机进行连接。交换机是基于以太网协议通信的。但是不能跨局域网进行通信。

      互联网:互联网是由多个局域网彼此之间连接而成。

      3.网络层

      在这一层使用的协议是ip协议。

      ip协议规定,只要是接入了互联网的计算机,都必须有一个ip地址。

      这类IP地址类似于255.255.255.0,是由点分十进制,

      最小的 是0.0.0.0,最大的是255.255.255.255。

      其中有ipv4和ipv6两种协议,开发ipv6的原因是v4不够使用。

      广域网与路由器。

      要使得局域网与局域网之间实现通信,需要使用路由器,将交换机连接至路由器,就可以和其他连入路由器的交换机进行通信。

      路由器与交换机之间有网关。

      ip地址是动态分配的。每当你重新连入一次网络后,都有可能会改变。

      4.传输层

      tcp

      udp

      在这一层中使用这两种协议,这些协议都是基于端口号(port)的协议。

      端口号是用来唯一表示一台计算机上的某个应用程序的。

      端口范围是0——65535

      假设一个pc机上有65536个应用程序启动,当启动地65537个时,会报错,因为没有端口给它使用了。

      注意:0~1024这些都是操作系统默认使用的端口号

      建议:使用8000之后的端口

      MySQL默认端口:3306

      Redis默认端口:6379

      django默认端口:8000

      flask默认端口:5000

      tomcat默认端口号:8080

      端口号也是动态分配的。

      我们通常使用ip+port唯一标识接入网络的软件。

      

      5.应用层

      http协议

      ftp协议 

      

      tcp协议

      TCP协议时一个流式协议,是可靠的协议。

      是基于TCP协议通信,必须先建立双向通信。

      其中包括三次握手 和四次挥手。

      三次握手:

     

      在三次握手时,客户端先发送连接请求向服务器,当服务器接受到请求后,返回收到请求的报告,并向其发送连接请求,这两个可以一起发送,最后客户端再返回一个收到服务器请求的反馈信息。这样双向通道就建立完毕了。

      四次挥手:

     

      四次挥手是在连接断开时的动作,一开始,客户端需要向服务器发送断开连接请求,服务器收到请求后,向客户端发送收到请求的消息,但不立即发送断开服务器与客户端之间的连接,因为,数据传输工作可能没有结束,需要完成传输工作后,再发送断开连接请求,当客户端收到断开连接请求后,再向服务器发送收到断开请求的消息,这时候双向通道才算完全断开。

      总共流程:

    ,  

  • 相关阅读:
    c# GDI+中发生一般性错误的解决办法
    AutoMapper ProjectTo 与 Mapster ProjectToType
    c# 无法加载 DLL“SQLite.Interop.DLL”: 找不到指定的模块
    c# 剪裁图片
    c# System.InvalidOperationException:“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
    如何生成自己的二维码qrcode模块的使用
    Firefox20 到 Firefox21 的一个小改变
    修改document.domain的注意事项
    ✍59 300I显卡测试总结
    ✍57 PiPy上传模块&Linux 拆分合并
  • 原文地址:https://www.cnblogs.com/LZXlzmmddtm/p/11312015.html
Copyright © 2020-2023  润新知