一、网络编程
软件开发
c/s架构
c:客户端
s:服务端
b/s架构
b:浏览器
s:服务端
本质:b/s其实也是c/s 服务端:24小时不间断提供服务,谁来救服务谁
客户端:想什么时候体验服务,就去找服务端 网络编程起源于美国军事,主要是想实现远程数据传输
而要想实现远程通信,第一个需要具备的条件就是:物理连接介质
其次还需要一个共同的标准:协议 OSI七层协议(模型)
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层 可以将其分为五层
应用层
传输层
网络层
数据链路层
物理连接层 我们从下往上分析比较容易理解
物理连接层:
实现计算机之间物理连接,传输的数据是二进制
电信号工作原理:电只有高低电平
数据连链路层:
规定了二进制数据的分组方式
规定了只要是接入互联网的计算机,都必须有一块网卡
网卡上有世界唯一的编号:
每块网卡出厂时都被烧制上一个世界唯一的mac地址
长度为48位的二进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线好)
上面的两个规定其实就是以太网协议
基于以太网协议通信:通信基本靠吼
弊端:广播风暴
交换机:如果没有交换机,你的电脑就变成了马蜂窝,有了交换机之后,所有的电脑只需要
       一个网卡连接即可实现多台电脑之间的物理连接 网络层:
规定了计算机都必须有一个ip地址
ip地址特点:点分十进制
有两个版本,ipv4和ipv6(为了能够兼容更多的计算机)
最小:0.0.0.0
最大:255.255.255.255
ip协议可以跨局域网传输
ip地址能够唯一标识互联网中独一无二的一台机器
传输层:
TCP,UDP基于端口工作的协议
其实计算机之间通信其实是计算机上面的应用程序与应用程序之间的通信
端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序
端口范围:0~65535(动态分配)
注意:0~1024通常是归操作系统分配的端口号
通常情况下,我们写的软件端口建议起在8000之后
注意:一台计算机上同一时间一个端口只能被一个应用程序占用 小总结:
ip地址:唯一标识全世界接入互联网的独一无二的机器
port端口:唯一标识一台计算机上的某一个应用程序
ip+port:能够标识全世界上独一无二的一台计算机上的某一个应用程序 补充:arp协议:根据ip地址解析mac地址 应用层(HTTP协议,FTP协议) UDP协议:不可靠,它不需要建立连接,发完就扔,但是传输效率高 TCP协议(流式协议,可靠协议)
         可靠原因:给对方发消息,对方必须回复确认收到传输的数据才会被删除,
否则会在一定时间间隔之内反复发送直到对方接受或者超时
            三次握手四次挥手
三次握手建连接
      
四次挥手断连接
      
     洪水攻击:
      
星轨:一次最多能接受的请求次数

DAY30、网络编程的更多相关文章

  1. day30 网络编程 之进程,线程,协程

    进程点进去 线程点进去 协程点进去 什么是进程 进程(有时称为重量级进程)是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.同一个程序执行两次,属于是两个不 ...

  2. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  3. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  4. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  5. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  6. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  7. 浅谈C#网络编程(一)

    阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...

  8. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

  9. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

随机推荐

  1. springboot~jpa个性化数据操作接口

    jap是个全能仓储 jap把很多数据库访问都封装了,并且提交了默认的一切数据方法签名的约定,大家按着约定走,可以不写SQL语句,而如果比较复杂的情况,也需要写SQL,这里我们介绍一下查询和修改的实例方 ...

  2. Java基础知识回顾之六 ----- IO流

    前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...

  3. js实现浏览器调用电脑的摄像头拍照

    <!DOCTYPE html> <html lang="en"> <head> <style> * { margin: ; padd ...

  4. 驰骋开源的asp.net工作流程引擎java工作流 2015 正文 驰骋工作流引擎ccflow6的功能列表

    关键词: 驰骋工作流引擎   ccflow的功能列表   工作流功能列表  表单引擎功能列表 我们工作流引擎ccflow6重构之后对功能做了一些调整,要想快速了解ccbpm的功能,可以以下面列表为准 ...

  5. IDEA XML注释与取消注释快捷键

    IntelliJ IDEA和eclipse中编辑Java文件时,注释和取消注释的快捷键都是: "CTRL + / " 编辑xml文件时, 注释:CTRL + SHIFT + / 取 ...

  6. 阿里云服务器,Sql Server 本地连接服务器端问题记录

    1.如果你是阿里云服务器,配置参数都整好了并且排除了防火墙问题(关闭了防火墙),依然没有连接上,那就先考虑这个问题 问题:阿里云服务器的SQLServer不允许远程连接 原因:因为除了服务器上的防火墙 ...

  7. Linux(CentOS 7)安装测试mysql5.6服务

    1.rpm -qa | grep mysql,查看原系统中是否有已经安装得mysql. 注:centos7系统在安装完成后,未安装mysql任何版本. 2. rpm -e --nodeps mysql ...

  8. C#零基础入门-0-开发工具

    Visual Studio sharpDevelop:http://www.icsharpcode.net/OpenSource/SD/Download/ Visual Studio Express

  9. Jenkins 配置GitLab插件和Git插件

    本文演示如何在安装完Jenkins之后,配置GitLab插件和Git插件. 1 安装插件 浏览器登录Jenkins Web UI,点击系统管理,再点击管理插件,切换到可选插件,分别搜索GitLab P ...

  10. servlet之转发与重定向的区别

    转发(服务器端跳转):  一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...