一、网络编程
软件开发
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. 《Unity3D/2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  2. SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  3. GoLang simple-project-demo-03

    变量的定义 package main import "fmt" func main() { var a = "initial" fmt.Println(a) v ...

  4. Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控

    前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...

  5. Java 工厂模式(一)— 抽象工厂(Abstract Factory)模式

    一.抽象工厂模式介绍: 1.什么是抽象工厂模式: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式向客户端提供一个接口,使得客户端在不知道具体产品的情类型的情况下,创建 ...

  6. 03 入门 - 安装MVC 5和创建应用程序

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 本篇内容: 1. ASP.NET MVC 5的软件需求 2. 安装ASP.NET MVC 5 1)安装MVC 5开发组件 2)服 ...

  7. linux 子系统折腾记 (三)

    所以说,英文真是个好东西,很多资料都只有英文版本,要是不懂英文,甚至你不知道这个资料的存在,更别提用蹩脚的翻译软件去翻译了. wsl 的资料:https://docs.microsoft.com/zh ...

  8. 【java学习】实践中总结--持续更新中

    目录: 一些定义 配置环境 相关语法 1.一些定义 java中DO的含义: https://blog.csdn.net/canot/article/details/51698047 DAO 中包含了各 ...

  9. Flink打包生成安装包缺少jar包

    官方默认打包生成的安装包的flink-release-1.7.0\flink-dist\target\flink-1.7.0-bin\flink-1.7.0\lib下缺少jar flink-dist项 ...

  10. ngxin 配置ssl

    1.上aliyun.com 申请免费ssl证书, 登录aliyun后搜索 “ca证书” , 申请使用“文件验证”,把文件传到服务器指定目录上,验证即可. 2.然后下载证书, 解压后传到服务器上, 在n ...