网络编程初识/OSI协议/TCP协议三握四挥

网络编程


软件开发架构

c/s架构(client/server)

  • c:客户端--什么时候想体验服务了,就去找服务端寻求服务
  • s:服务端--24小时不间断提供服务

b/s架构(browser/server)

  • b:浏览器
  • s:服务器

PS:b/s架构本质上也是c/s架构

总结:

  • 手机端看上去CS架构比较火,实际上BS已经在悄悄崛起,手机端之后肯定也是BS比较火
  • 微信支付宝都在做一件事:统一接口
  • 学习网络编程,就可以开发一个cs架构的软件
  • 学习并发,数据库,前端,Django就可以开发一个bs架构的软件

网络编程发展史

任何先进的技术最早都来源于军事

总结:

  • 要实现远程通信第一个需要具备的条件是:物理连接介质
    • 1.早期的电话----电话线

    • 2.老式电脑----网线

    • 3.笔记本电脑/无线电话----网卡

  • 人要想实现无障碍交流,必须要说统一的语言,而计算机与计算机之间要想实现远程通信除了有物理连接介质之外还需要有一套公共的标准/协议

OSI协议

OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
OSI五层协议
应用层
传输层
网络层
数据链路层
物理连接层
OSI五层协议详述

1.物理连接层

  基于电信号传输二进制数据

2.数据链路层

  • 1.规定的电信号的分组方式
  • 2.规定了任何一台接入互联网的计算机都必须有一块网卡,且每一块网卡上面都刻有世界上独一无二的编号(mac地址)
    • mac地址(12位16进制数)
      • 前6位是厂商编号
      • 后6位是流水线编号

PS:以上两点合称为"以太网协议"

3.网络层

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

  ip地址特点:点分十进制

  ip地址最小:0.0.0.0

  ip地址最大:255.255.255.255

  ip地址目前有两个版本:IPV4 IPV6

 

4.传输层

  • TCP\UDP都是基于端口工作的协议
  • 端口(port):用来唯一标识一台计算机上的某个应用程序
    • 端口号的范围:0~65535
    • 注意:0~1024这些都是操作系统默认使用的端口号
    • 建议:使用8000之后的端口
      • MySQL默认端口:3306
      • Redis默认端口:6379
      • django默认端口:8000
      • flask默认端口:5000
    • 端口号是动态分配的
    • 程序被分配到端口号后,重新启动时会被重新分配另一个端口号

5.应用层

  • HTTP协议
  • FTP协议

局域网与交换机:

交换机

广域网与路由器:

路由器

 


总结:

  • 由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本
  • 互联网是由若干个局域网互相连接而成的
  • 计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
  • 交换机:基于以太网协议通信,不能跨局域网通信
  • ip地址:用来唯一标识接入互联网的一台计算机
  • port端口:用来唯一标识一台计算机上的某个应用程序
  • ip+port:唯一标识接入互联网一台计算机上的某个应用程序
  • TCP协议:
    • 流式协议,可靠协议
    • 基于TCP协议通信,必选先建立双向通道
    • TCP协议传输数据之所以可靠的原因就在于有双向通道这句话是错误的,因为正确的原因是因为TCP协议的传输具有反馈机制

基于TCP协议传输数据:三次握手四次挥手

三次握手四次挥手(图解)

其中TIME_WAIT就是Client客户端等待Server服务端返回消息数据的等待时间

且建立连接时有两步操作:

  • ACK=x + 1传输数据
  • SYN seq=y允许传输操作

上面两步操作可合为一步

三次握手建连接 (图解)

四次挥手断连接(图解)

posted @ 2019-08-06 19:57  泡泡茶壶i  阅读(197)  评论(0编辑  收藏  举报