1 : osi 七层,tcp/ip 五层

  1. 1 cs架构和bs架构
    2 互联网
    3 osi七层 tcp/ip五层
    -物理层
      -网线、光纤
           -数据链路层
          -网卡
           -网络层
          -路由器
           -传输层(也叫运输层)
          -四层路由器
           -应用层(会话层、表示层、应用层)
          http协议、ftp协议、websocket协议。。。

2每一层功能

  1. 1 物理层
    -网线 ----> 1010101电信号 -----> 从网线中传输电信号
       -8个比特位是1个字节(重要)
    2 数据链路层
    -数据帧: 一组电信号就是一个数据帧/数据报,有头和数据部分
       -网卡: ----> mac地址 ----> 全球唯一 ----->网卡出厂---->烧在网卡上
       -48位二进制 ----> 看到的都是16进制表示
       -广播:
           -局域网内通信,所有人都会接收到,通过mac地址确定是给谁的数据帧/数据报,如果不是自己的就不处理
       -广播风暴
    3 网络层
    -跨局域网通信,需要经过网络层
       -IP地址
       -子网掩码
       -ARP协议 : ipmac的对照表
    4 传输层
    -端口: 0-65535 一个应用程序可以监听多个端口,但是一个端口只能属于一个应用程序
       -TCP协议: 可靠传输
       -UDP协议: 不可靠传输

3 常用端口号

应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL
熟知端口 21,20 69 23 25 53 80 22 3306
传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP
  1. DNS 把网址转换成IP地址
    从浏览器发出去的数据,都是http协议,默认是80端口

4 TCP 三次握手四次挥手(面试)

  1. 1 TCP:可靠传输:三次握手,四次挥手保证数据可靠
    2 三次握手
    -客户端向服务端发送链接请求    ----1
       -服务端回复可以建立你,并且带着跟客户端建立链接的数据报  ----2
       -客户端收到后,链接建好了     ----3
    3 这个过程后就可以可靠传输数据

    4 断开链接(四次挥手)
    -客户端告诉服务器,要断开    ----1
       -服务端收到,回复ok         ----2
       -服务端可能还有数据在传递,暂时还没断开-----等数据传完
       -服务端告诉客户端,我要断了   ----3
       -客户端收到,回复ok         ----4

5 Socket层

  1. 1 Socket抽象层,从osi七层抽象出来的,抽象了网络层和传输层,跟语言无关,任何语言都会有socket的封装
    2 专门给开发人员用的

6 基于TCP的socket套接字(重点)

  1. (简易版本)
  2. 服务端
  3. import socket
  4. sever = socket.socket()
  5. sever.bind(('192.168.11.123', 7777))
  6. print('服务端启动完成,等待连接...')
  7. sever.listen(5)
  8. sock, addr = sever.accept()
  9. while True:
  10. data = sock.recv(1024)
  11. print('客户端发来的信息', data.decode('utf-8'))
  12. msg = input('请输入: ').strip()
  13. if msg == 'q':
  14. break
  15. sock.send(msg.encode('utf-8'))
  16. sock.close()


  1. (客户端)
  2. import socket

  3. client = socket.socket()
  4. client.connect(('192.168.11.123', 7777))
  5. while True:
  6. msg = input('请输入: ').strip()
  7. if msg =='q':
  8. break
  9. client.send(msg.encode('utf-8'))
  10. data = client.recv(1024)
  11. print('服务端发来的信息: ',data.decode('utf-8'))
  12. client.close()

  1.  

总结

  1. 1 osi 七层模型 ----> 五层
    -物理层
      -10101000电信号----->网线、光纤
       -数据链路层
      -网卡---->mac地址,全球唯一
           -广播: 局域网中通信
    -网络层
      -ip地址: ipv4ipv6
           -子网掩码+ip区分是不是属于同一个子网
           -arp协议: ipmac地址的映射表
       -传输层(运输层)
      -端口: 0 --- 65535
           -端口是用来区分应用程序的
           -TCP: 可靠传输,三次握手,四次挥手
           -UDP: 不可靠传输
       -应用层
      -httpftp
    2 常用的端口(重要)
    -80 http协议,基于TCP
       -3306 mysql
       -53 DNS(域名解析)---->基于UDP
    3 TCP/IP---->socket抽象层---->针对于程序员来写客户端,服务端的程序(更好写)
    4 基于TCP的套接字(socket)的客户端和服务端

01:osi七层---基于TCP协议的套接字(socket)的更多相关文章

  1. 网络编程(二)--TCP协议、基于tcp协议的套接字socket

    一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...

  2. 网络编程(二)——TCP协议、基于tcp协议的套接字socket

    TCP协议与基于tcp协议的套接字socket 一.TCP协议(流式协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的 ...

  3. 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现

    一.客户端/服务器架构(C/S架构)                                                即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...

  4. 网络编程之TCP三次握手与四次挥手、基于TCP协议的套接字编程

    目录 TCP三次握手和四次挥手 背景描述 常用的熟知端口号 TCP概述 TCP连接的建立(三次握手) TCP四次挥手 如果已建立连接,客户端突然断开,会怎么办呢? 基于TCP协议的套接字编程 什么是S ...

  5. python 之 网络编程(基于TCP协议的套接字通信操作)

    第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连 ...

  6. [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序]

    [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序] 为何学习socket套接字一定要先学习互联网协议: 1.首先:要想开发一款自己的C/S架构软件,就必须掌握socket ...

  7. 什么是 socket?简述基于 tcp 协议的套接字通信流程?

    Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计 ...

  8. 网络编程(四)——基于udp协议的套接字socket、socketserver模块的使用

    基于udp协议的套接字.socketserver模块 一.UDP协议(数据报协议) 1.何为udp协议 不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包. ...

  9. 基于TCP协议的套接字编程

    06.26自我总结 1.关于Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在 ...

随机推荐

  1. [BUAA2021软工]结对第一阶段博客作业小结

    作业链接 结对项目-第一阶段 优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 山鸣谷应,相得益彰--杰对项目-第一阶段总结 该组对于可能 ...

  2. Mybatis-plus在原有的select查询语句中动态追加查询条件

    一.适用场景 1.使用了xml形式的mapper.2.不想在select查询中大量使用<if>标签来判断条件是否存在而加入条件. 二.步骤 1.自定义wrapper继承QueryWrapp ...

  3. gitlab同步插件gitlab-mirrors报错<已解决,未找到原因>

    今天下午在使用gitlab-mirrors同步插件时,发现一直在报错 # ~/gitlab-mirrors/add_mirror.sh --git --project-name manifests - ...

  4. ipmitool使用手册

    ipmitool使用手册原创xinqidian_xiao 最后发布于2018-07-05 12:15:47 阅读数 17948 收藏展开一.查找安装包 查看ipmitool属于哪个安装包 #yum p ...

  5. Sqli-labs-master通关解析(持续更新中。。。)

    大多情况下:SQL注入其实就是构造正确的mysql命令,让网页回显本不应该让我们看到的数据(如用户的账号和密码). 第一关-联合查询注入 查库 // 查看当前页面在的数据库 ?id=-1' union ...

  6. python3 列表转换为字符串

    join将列表转换为字符串 list1 = ["张三","李四","王五"] a1 = ','.join(list1) print(a1) ...

  7. STM32的三种启动方式

  8. SystemVerilog 语言部分(二)

    接口interface: 既可以设计,也可以用来验证. 验证环境:interface使得连接变得简单不容易出错. interface可以定义端口,单双向信号,内控部使用initial always t ...

  9. CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台

    CoSky 基于 Redis 的服务治理平台(服务注册/发现 & 配置中心) Consul + Sky = CoSky CoSky 是一个轻量级.低成本的服务注册.服务发现. 配置服务 SDK ...

  10. 论鸿蒙OS在某些人眼中的样子

    对于鸿蒙OS,博客园有一篇文章<为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)>.有兴趣的可以看看. 在这篇文章中,个人觉得最精彩的不是文章本身,而是评论内容. 下面我挑一些出来,和大家 ...