DAY30、网络编程
一、网络编程
软件开发
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、网络编程的更多相关文章
- day30 网络编程 之进程,线程,协程
进程点进去 线程点进去 协程点进去 什么是进程 进程(有时称为重量级进程)是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.同一个程序执行两次,属于是两个不 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- python select网络编程详细介绍
刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...
- Linux Socket 网络编程
Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...
- 猫哥网络编程系列:详解 BAT 面试题
从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...
- 浅谈C#网络编程(一)
阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...
- C++11网络编程
Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...
- Java - 网络编程
Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh. 参考:
随机推荐
- jenkins定位GitLab推送的最新Webhook中push event来自哪一个分支
转载请标明出处:http://www.cnblogs.com/zblade/ 一.调研目的 jenkins可以和GitLab搭档,每当GitLab上有commit的时候,都可以触发jenkins执行相 ...
- JavaScript夯实基础系列(三):this
在JavaScript中,函数的每次调用都会拥有一个执行上下文,通过this关键字指向该上下文.函数中的代码在函数定义时不会执行,只有在函数被调用时才执行.函数调用的方式有四种:作为函数调用.作为 ...
- Python:游戏:贪吃蛇原理及代码实现
一.游戏介绍 贪吃蛇是个非常简单的游戏,适合练手.先来看一下我的游戏截图: 玩法介绍:回车键:开始游戏空格键:暂停 / 继续↑↓←→方向键 或 WSAD 键:控制移动方向. 食物分红.绿.蓝三种,分别 ...
- 补习系列(17)-springboot mongodb 内嵌数据库
目录 简介 一.使用 flapdoodle.embed.mongo A. 引入依赖 B. 准备测试类 C. 完善配置 D. 启动测试 细节 二.使用Fongo A. 引入框架 B. 准备测试类 C.业 ...
- mysql 盲注二分法python脚本
import urllib import urllib2 def doinject(payload): url = 'xxxxxxxxxxxxxxxxxxxxx' values = {'injecti ...
- EF 外键不显示、如何让外键显示!增、删、改 操作时,外键不显示,只显示导航属性!
一.问题描述:EF 外键不显示.如何让外键显示!增.删.改 操作时,外键不显示,只显示导航属性! EF 添加.增加.插入数据时,外键不显示! 二.解决方案:在根据数据库生成模型的时候,选中“在模型中” ...
- javaweb中上传视频,并且播放,用上传视频信息为例
1.上传视频信息的jsp页面uploadVideo.jsp <body background="image/bk_hero.jpg"><div id=" ...
- 对于python爬虫urllib库的一些理解(抽空更新)
urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib库中,所有和网 ...
- eclipse建立工作集管理项目
废话不多说,直接上图 然后新建java working set管理项目,让自己的项目清晰明了
- jsp内置对象-application对象
隐含对象application是javax.servlet.ServletContext接口实现类的对象,其拥有application的作用范围,即application可以用于在多个用户之间保存数据 ...


