网络编程与socket
.互联网协议
互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织。
OSI七层协议:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
学习由下到上:
需要优先了解的协议一共5层:
- 物理连接层
基于电信号发送二进制的数据0101010111。
- 数据链路层
数据链路层的 "以太网协议",专门用于处理基于电信号发送二进制的数据。
以太网协议:
1.规定好电信号数据的分组方式。
2.每一台连接网线的电脑都必须要由一块 "网卡"。
- 网卡由不同厂商生产的
- 每块网卡都会有世界上独一无二12位的编号 "mac"地址。
- 前6位: 厂商号
- 后6位: 流水号
- 交换机:
可以让多台电脑连接到一起。
基于以太网协议发送数据:
特点:
广播、单播
弊端:
广播风暴、不能跨局域网通信。
- 互联网:
让局域网之间进行通信。
- 网络层
IP地址: 用于标识唯一的一台计算机(局域网)的地址。
IP: 点分十进制
最小值: 0.0.0.0
最大值: 255.255.255.255
IPV4(了解):
一开始用电脑的人不多,所以出现IPV4的协议版本。
IPV6(了解):
括号IP。
本机IP: 回环地址 127.0.0.1 ---> localhost
- 传输层
TCP/UDP协议,他们都是基于端口工作的。
- 端口号: 标识电脑上某个一个软件。
- 端口号范围: 0-65535
注意:
1.操作系统中,一般0-1024的端口都被默认使用了(0-1024不要动)
2.尽量使用8000之后的端口号 8001
开发中常用软件的默认端口号 (默写) :
mysql: 3306
mongodb: 27017
Django: 8000
Tomcat: 8080
Flask: 5000
Redis: 6379
若想服务端与客户端进行通信,必须要建立连接,产生双向通道。
一条是客户端往服务端发送消息的。
另一条是服务端往客户端发送消息的。
- 应用层
http
ftp
总结:
ip:用于唯一标识某一台计算机的位置。
port: 端口用于确认计算机上的一个应用软件。
ip + port: 世界上某一台电脑上的一个应用软件。
TCP协议的工作原理:
TCP是一个流式协议
三次握手,四次挥手(*******):
三次握手建连接:
建立双向通道,建立好连接。- listen: 监听
- established: 确认请求建立连接
发送数据:
write
read
客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉。否则,会隔一段时间发送一次,让服务端返回确认收到。
在一段时间内,若服务端还是不返回确认收到,则取消发送。并释放内存中的数据。四次挥手断连接:
- TIME_WAIT: 时间等待
5.Socket:
1.什么是Socket?
socket是一个模块,可以写一套C/S架构的套接字。
2.为什么要使用Socket?
socket套接字会封装好各层协议的工作。
好处:
可以节省开发成本。
3.如何使用
import socket
注意: 客户端与服务端必须尊循:
一端send,另一端recv
不同两端同时send或recv
网络编程与socket的更多相关文章
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- python 网络编程:socket(二)
上节地址:Python网络编程:socket 一.send和sendall区别 send,sendall ret = send('safagsgdsegsdgew') #send 发送 ...
- Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)
在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...
- 网络编程与socket套接字
网络编程与socket套接字 传输层 PORT协议 port是一种接口,数据通过它在计算机和其他设备(比如打印机,鼠标,键盘或监视器)之间,网络之间和其他直接连接的计算机之间传递 TCP协议 传输 ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- iOS 网络编程:socket
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- iOS网络编程笔记——Socket编程
一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
- 网络编程,socket
1.网络编程 网络: TCP/IP 彼此之间遵守协议和规范!之间才能产生通信! IP: 每个人都有自己的身份证号! 用来标识我们网络中每一台计算机! IP地址= 网络地址 +主机地址 网络地址 :标识 ...
随机推荐
- NModbus4的使用
步骤1:打开串口 SerialPort port = new SerialPort("COM7") port.BaudRate = ; port.BaudRate = ; port ...
- java中连接数据库的步骤
JDBC(连接数据库) 简单连接数据库的步骤: 1.将mysql的jdbc驱动加载到内存中 指定需要连接的数据库地址.用户名和密码: 2.获取连接: 3.通过连接创建Statement对象: 4.执行 ...
- MHA简单部署
MHA是目前比较成熟的mysql高可用集群方式之一. 一.参考文档:1.官方文档:[ https://github.com/yoshinorim/mha4mysql-manager/wiki ]2.个 ...
- Replace Words
In English, we have a concept called root, which can be followed by some other words to form another ...
- 【0.2】【MySQL】常用监控指标及监控方法(转)
[MySQL]常用监控指标及监控方法 转自:https://www.cnblogs.com/wwcom123/p/10759494.html 对之前生产中使用过的MySQL数据库监控指标做个小结. ...
- GrapeCity Documents for Excel 文档API组件 V2.2 新特性介绍
GrapeCity Documents for Excel 文档API组件 V2.2 正式发布,本次新版本包含诸多重量级产品功能,如:将带有形状的电子表格导出为 PDF.控制分页和电子表格内容.将Ex ...
- 小菜鸟之Oracle数据库
select * from STUDENT; select * from mark; select * from COURSE; select * from teacher; --注释 select ...
- 版本控制器之SVN(二)
安装重启以后,在菜单栏找到TortoiseSVN程序 启动以后 点击: 填写相应的信息: 可以看到项目的相关信息 选中仓库,右键 > Browse Repository 进入如下界面: 可以打开 ...
- Git_基础命令
gitinit//初始化一个Git仓库" role="presentation">gitinit//初始化一个Git仓库gitinit//初始化一个Git仓库 gi ...
- Spring 中的bean 是线程安全的吗?
结论: 不是线程安全的 Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体sco ...