网络编程 基础

一  软件开发架构

# c/s架构(client/server)
c:客户端 / s:服务端
# b/s架构(browser/server)
b:浏览器 / s:服务器
ps:bs架构本质也是cs架构
手机端看上去cs架构比较火,实际上bs已经在崛起,微信支付宝都在做一件事:统一接口,手机端之后肯定也是bs比较火
未来应用程序都会越来越简单,加上5g和云的力量,只要一个界面,就能实现很多功能,比如大型游戏用手机也能玩,原来的客户端也放到云端

服务器和客户端的本质区别

# 服务端:24小时不间断提供服务
# 客户端:什么时候想体验服务,就去找心仪的服务端寻求服务

网络编程核心

# 学习网络编程,就可以开发一个cs架构的软件
未来结合并发编程,数据库,前端和django   就可以一个bs架构的软件

1.2 网络编程的发展史

任何现进的技术最早都来源于军事# 回到过去
1.早期的电话 电话线
2.大屁股电脑 网线
3.笔记本电脑 无线电话 网卡要想实现远程通信第一个需要具备的条件是:物理连接介质

1.3 如何实现网络通信

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

二  OSI协议
2.0 OSI七层协议

应用层\表示层\会话层
传输层\网络层
数据链路层\物理连接层#应表会传网数物

OSI五层协议

应用层\传输层\网络层\数据链路层\物理连接层

2.1 物理连接层

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

2.2 数据链路层

# 1.规定的电信号的分组方式
# 2.规定了任何一台接入互联网的计算机都必须有一块网卡
每一块网卡上面都刻有世界上独一无二的编号
12位16进制数
前6位是厂商编号
后6位是流水线编号
我们管这12数叫mac地址
ps:以上两点合称为"以太网协议"

2.2.1 交换机

基于以太网协议通信
不能跨局域网通信互联网是有N多个局域网彼此之间连接而成的

2.3 网络层

# IP协议
规定了只要是接入互联网的计算机都必须有一个IP地址
ip地址特点:点分十进制
ip地址最小:0.0.0.0
ip地址最大:255.255.255.255
ip地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6版本)IP地址是动态分配的

2.4 传输层

# TCP\UDP都是基于端口工作的协议
端口(port) 计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信端口:用来唯一标识一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
django默认端口:8000
flask默认端口:5000端口号是动态分配的
第一次起qq分配到的是8989
将qq关闭再次启动端口号可能就变了

2.4.1 总结

ip地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一标识一台计算机上的某个应用程序ip+port:唯一标识接入互联网一台计算机上的某个应用程序

2.5 应用层

HTTP协议
FTP协议

TCP协议
流式协议,可靠协议
基于TCP协议通信 必选先建立双向通道
TCP协议传输数据之所以可靠的原因就在于有双向通道???
三次握手四次挥手
星轨
明星出轨

三次握手建连接    

四次挥手断联系

洪水攻击

转载于:https://www.cnblogs.com/Ryan-Yuan/p/11311189.html

day27 网络编程一相关推荐

  1. linux网络编程一:主机字节序与网络字节序的的判断

     linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...

  2. linux网络编程一

    网络基础 协议的概念 什么是协议 从应用的角度出发,协议可理解为"规则",是数据传输和数据的解释的规则. 假设,A.B双方欲传输文件.规定: 第一次,传输文件名,接收方接收到文件名 ...

  3. windows socket网络编程一:最简单的服务器和客户端搭建

    文章目录 简介 服务器 网络版本 1.打开网络库 2.校验版本 3.创建socket 4.绑定地址和端口 5.监听 6.接受链接 7.与客户端收发消息 客户端 1.打开网络库 2.校验版本 3.创建s ...

  4. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天

    网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...

  5. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载. J ...

  6. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, 1 /* 2 *TCP 3 *建立连接,形成传输数据的通道: 4 *在连接中进行大数据量传输: ...

  7. Linux网络编程之IP地址转换为无符号整数的方法

    Linux网络编程之IP地址转换为无符号整数的方法,代码如下:(没考虑异常输入) #include <stdio.h> #include <string.h> #include ...

  8. 浅谈Java网络编程之Socket (2)

    <浅谈Java网络编程之Socket (1)>中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码. import java.net.*; import java.io ...

  9. iOS网络编程之Socket

    [深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...

最新文章

  1. NoSQL介绍、memcached介绍、安装memcached、 查看memcached状态
  2. DWZ与KindEditor编辑器的整合
  3. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti
  4. android 原生砸金蛋 动画,C4D-砸金蛋动画效果制作
  5. html页面取js里面的值,如何在javascript中获取HTML元素的样式值?
  6. linux 用vi命令的使用以及vi编辑,Linux中vi编辑命令的使用
  7. linux离线安装python3.7教程_Linux傻瓜式七步完美安装Python3.7
  8. mysql 密码长度约束_MySQL简单操作【1、在cmd下MySQL的运行及简单增删改查】
  9. 理论基础 —— 索引 —— 稠密索引
  10. Android 多屏幕适配 dp和px的关系
  11. 苹果抄袭豌豆射手实锤!AirPods Pro又被玩坏了...
  12. new和delete创建和销毁二维数组
  13. joomla第一单元第四节K2类别设置和第五节项目视图选项
  14. 开源WEB服务器-lighttpd 1.4.24发布
  15. 成绩单表格html,【Web前端HTML5CSS3】15-表格
  16. 4个你未必知道的内存小知识
  17. 龙芯源码编译mysql_使用源码包在龙芯2F上安装mysql
  18. java 因数分解_Java--分解质因数
  19. java获取https网页代码_java抓取Https协议url地址的源码的方法
  20. Android异常篇 Cannot access com.***...***.class

热门文章

  1. ubuntu 12.04 eclipse 安装
  2. 人体反应测试仪 c语言,人体反应速度测试仪毕业设计说明
  3. winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...
  4. 不使用杀毒软件就上网也不会感染计算机病毒,【判断题】不使用杀毒软件就上网也不会感染计算机病毒。 A. 正确 B. 错误...
  5. 比较两个表格的不同_两表数据的核对,WPS表格似乎更加方便容易
  6. Java_基础阶段笔记总结汇总
  7. pushpop指令的操作数必须是字操作数_PLC的指令,电气人必须了解的基础内容
  8. LeetCode 2100. 适合种地的日子(计数)
  9. LeetCode 2039. 网络空闲的时刻(BFS)
  10. 程序员面试金典 - 面试题 08.05. 递归乘法(位运算)