01:osi七层---基于TCP协议的套接字(socket)
1 : osi 七层,tcp/ip 五层
1 cs架构和bs架构
2 互联网
3 osi七层 tcp/ip五层
-物理层
-网线、光纤
-数据链路层
-网卡
-网络层
-路由器
-传输层(也叫运输层)
-四层路由器
-应用层(会话层、表示层、应用层)
http协议、ftp协议、websocket协议。。。
2每一层功能
1 物理层
-网线 ----> 1010101电信号 -----> 从网线中传输电信号
-8个比特位是1个字节(重要)
2 数据链路层
-数据帧: 一组电信号就是一个数据帧/数据报,有头和数据部分
-网卡: ----> mac地址 ----> 全球唯一 ----->网卡出厂---->烧在网卡上
-48位二进制 ----> 看到的都是16进制表示
-广播:
-局域网内通信,所有人都会接收到,通过mac地址确定是给谁的数据帧/数据报,如果不是自己的就不处理
-广播风暴
3 网络层
-跨局域网通信,需要经过网络层
-IP地址
-子网掩码
-ARP协议 : ip和mac的对照表
4 传输层
-端口: 0-65535, 一个应用程序可以监听多个端口,但是一个端口只能属于一个应用程序
-TCP协议: 可靠传输
-UDP协议: 不可靠传输
3 常用端口号
应用程序 | FTP | TFTP | TELNET | SMTP | DNS | HTTP | SSH | MYSQL |
---|---|---|---|---|---|---|---|---|
熟知端口 | 21,20 | 69 | 23 | 25 | 53 | 80 | 22 | 3306 |
传输层协议 | TCP | UDP | TCP | TCP | UDP | TCP | TCP | TCP |
DNS: 把网址转换成IP地址
从浏览器发出去的数据,都是http协议,默认是80端口
4 TCP 三次握手四次挥手(面试)
1 TCP:可靠传输:三次握手,四次挥手保证数据可靠
2 三次握手
-客户端向服务端发送链接请求 ----1
-服务端回复可以建立你,并且带着跟客户端建立链接的数据报 ----2
-客户端收到后,链接建好了 ----3
3 这个过程后就可以可靠传输数据
4 断开链接(四次挥手)
-客户端告诉服务器,要断开 ----1
-服务端收到,回复ok ----2
-服务端可能还有数据在传递,暂时还没断开-----等数据传完
-服务端告诉客户端,我要断了 ----3
-客户端收到,回复ok ----4
5 Socket层
1 Socket抽象层,从osi七层抽象出来的,抽象了网络层和传输层,跟语言无关,任何语言都会有socket的封装
2 专门给开发人员用的
6 基于TCP的socket套接字(重点)
(简易版本)
服务端
import socket
sever = socket.socket()
sever.bind(('192.168.11.123', 7777))
print('服务端启动完成,等待连接...')
sever.listen(5)
sock, addr = sever.accept()
while True:
data = sock.recv(1024)
print('客户端发来的信息', data.decode('utf-8'))
msg = input('请输入: ').strip()
if msg == 'q':
break
sock.send(msg.encode('utf-8'))
sock.close()
(客户端)
import socket
client = socket.socket()
client.connect(('192.168.11.123', 7777))
while True:
msg = input('请输入: ').strip()
if msg =='q':
break
client.send(msg.encode('utf-8'))
data = client.recv(1024)
print('服务端发来的信息: ',data.decode('utf-8'))
client.close()
总结
1 osi 七层模型 ----> 五层
-物理层
-10101000电信号----->网线、光纤
-数据链路层
-网卡---->mac地址,全球唯一
-广播: 局域网中通信
-网络层
-ip地址: ipv4,ipv6
-子网掩码+ip区分是不是属于同一个子网
-arp协议: ip和mac地址的映射表
-传输层(运输层)
-端口: 0 --- 65535
-端口是用来区分应用程序的
-TCP: 可靠传输,三次握手,四次挥手
-UDP: 不可靠传输
-应用层
-http,ftp
2 常用的端口(重要)
-80: http协议,基于TCP
-3306 :mysql
-53 DNS(域名解析)---->基于UDP
3 TCP/IP---->socket抽象层---->针对于程序员来写客户端,服务端的程序(更好写)
4 基于TCP的套接字(socket)的客户端和服务端
01:osi七层---基于TCP协议的套接字(socket)的更多相关文章
- 网络编程(二)--TCP协议、基于tcp协议的套接字socket
一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...
- 网络编程(二)——TCP协议、基于tcp协议的套接字socket
TCP协议与基于tcp协议的套接字socket 一.TCP协议(流式协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的 ...
- 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现
一.客户端/服务器架构(C/S架构) 即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...
- 网络编程之TCP三次握手与四次挥手、基于TCP协议的套接字编程
目录 TCP三次握手和四次挥手 背景描述 常用的熟知端口号 TCP概述 TCP连接的建立(三次握手) TCP四次挥手 如果已建立连接,客户端突然断开,会怎么办呢? 基于TCP协议的套接字编程 什么是S ...
- python 之 网络编程(基于TCP协议的套接字通信操作)
第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连 ...
- [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序]
[网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序] 为何学习socket套接字一定要先学习互联网协议: 1.首先:要想开发一款自己的C/S架构软件,就必须掌握socket ...
- 什么是 socket?简述基于 tcp 协议的套接字通信流程?
Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计 ...
- 网络编程(四)——基于udp协议的套接字socket、socketserver模块的使用
基于udp协议的套接字.socketserver模块 一.UDP协议(数据报协议) 1.何为udp协议 不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包. ...
- 基于TCP协议的套接字编程
06.26自我总结 1.关于Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在 ...
随机推荐
- SpringBoot2.0之@Configuration注解
SpringBoot2.0之@Configuration注解 本文转载自:https://www.javaman.cn/sb2/springboot-configuration 前面我们介绍了Spri ...
- html单页面中用angular js
1.引入angluar js文件 2.html页面应用区域中加入(ng-app="myApp" ng-controller="myController"),区域 ...
- 从几道题目带你深入理解Event Loop_宏队列_微队列
目录 深入探究JavaScript的Event Loop Event Loop的结构 回调队列(callbacks queue)的分类 Event Loop的执行顺序 通过题目来深入 深入探究Java ...
- QFNU 10-16 training
7-9.小字辈 思路:建立一个类,并且类中存有其父节点,其地位,其儿子节点(因为儿子节点有很多,所以要用vector进行存储),通过-1这个祖先节点进行查找.首先找到-1这个祖先节点,并且读入其他位置 ...
- CF1487 Cat Cycle
一个规律题目要多做多积累 , 脑子不太灵活 CF1487 Cat Cycle 题目大意: 两只猫A,B, A猫从n -> n-1 -> n-2 ... -> 1 -> 2 .. ...
- 服务治理演进剖析 & Service Mesh、 xDS核心原理梳理
基于XDS协议实现控制面板与数据面板通信分享 基于这段时间在同程艺龙基础架构部的蹲坑,聊一聊微服务治理的核心难点.历史演进.最新动态, 以上内容属自我思考,不代表同程艺龙技术水准.如理解有偏差.理解不 ...
- [Python] 地图API
请求位置信息 https://restapi.amap.com/v3/place/text?keywords=北京大学&city=beijing&output=xml&offs ...
- [bug]Flask:KeyError: 'A secret key is required to use CSRF.'
参考 https://blog.csdn.net/huanglianggu/article/details/81263865
- Linux_软件包管理基本概述
一.回去软件包的途径 1.系统发行版的光盘或官方的服务器镜像站 http://mirrors.aliyun.com //阿里云镜像站 http://mirrors.sohu.com ...
- C语言中位运算异或“∧”的作用
1.概念异或运算符"∧"也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即 0∧0=0,0∧1=1, 1^0=1,1∧1=0.运算 ...