网络基础知识 tcp
网络基础相关的知识(1)架构a. C / S架构: client客户端和server服务器端 优势: 能充分发挥PC机的性能b. B / S架构: browser浏览器和server服务器 隶属于C / S架构 B / S架构统一了应用的接口.(2)通信的事:a.同一台电脑上两个py程序通信: 打开一个文件b.两个电脑如何通信: 连一个网线c.多个电脑通信:ex: 电脑1(源) 要找电脑2(目标)电脑1首先发送一个请求帧, 期中包含(我的ip是192.168.1.1, 我的mac地址是xxxxxxxx, 我要找ip地址为192.168.1.2的主机), 将此请求发送给交换机. 交换机要广播这条消息给其他所有的主机 目标主机接收到消息后, 对比发现自己就是被找的主机, 回复给交换机信息(我的ip地址是192.168.1.2, 我的mac地址是yyyyyyyyy, 请回复给ip地址为192.168.1.1, mac地址为xxxxxxx的主机)交换机单播形式返回给源主机 知识点:1 mac地址: 是一个物理地址, 全球唯一, 类似于身份证2 ip地址: 是一个四位点分十进制, 它标识了计算机在网络中的位置.类似于学号3交换机的通信方式:广播: 吼一嗓子单播: 一对一组播: 一对多4arp协议: 通过目标ip地址获取目标mac地址的一个协议.5端口: 操作系统为本机上每一个运行的程序都随机分配一个端口, 其他电脑上的程序可以通过端口获取到这个程序 ip地址 + 端口能唯一找到某台电脑上的某一个服务程序6路由器: 连接不同网段, 路由7网关: 类似于一个局域网的出口和入口8网段: 一个局域网内的ip地址范围9子网掩码: 子网掩码 & ip地址得到网段10osi五层模型:应用层: http, https, ftp 传输层: tcp / udp四层交换机 四层路由器网络层: ip协议路由器三层交换机数据链路层: arp协议以太网交换机网卡网桥物理层: 传输电信号集线器网线光纤 2socket模块这是一个新的模块import socket socket又叫做套接字有很多种类型, 但是咱们只需要知道两种就可以了 sk = socket.socket(family=AF_INET, type=SOCK_STREAM)family:一种: AF_UNIX基于文件类型的套接字(早期socket是源自于unix系统而研发的一个功能, 主要是为了同一台电脑上, 多个程序直接通信)unix系统的中心思想是: 一切皆文件一种: AF_INET基于网络类型的套接字type:一种是基于TCP协议SOCK_STREAM一种是基于UDP协议SOCK_DGRAM tcp协议: 可靠的, 面向连接的, 面向字节流形式的传输方式udp协议: 不可靠的, 不面向连接的, 面向数据报的传输方式, 但是它快 服务器
# import socket# import time# sk = socket.socket()# 不传参数,默认使用基于网络类型的套接字, 协议 : TCP# sk.bind(('192.168.12.104',18080))# 端口的范围是0-65535 但是 0-1023 这些你别用# sk.listen()# 同时能接受的连接# conn,addr = sk.accept()# 等待接受客户端的连接 阻塞等待# print('conn:',conn)# print('addr:',type(addr))# time.sleep(20)# conn.close()# sk.close() # 第二次 通信 import socket sk = socket.socket()# 我买一个新手机 sk.bind(('192.168.12.104',18080))# 我买一个手机卡 sk.listen()# 开机 conn,addr = sk.accept()# 等待朋友给我打电话 msg_r = conn.recv(10)# 接受数据,接受10个字节print(msg_r.decode('utf-8'),addr) conn.close()# 挂断电话sk.close() # 关机
客户端
# import socket# import time# sk = socket.socket()# sk.connect(('192.168.12.104',18080))# 连接# time.sleep(20)# sk.close() # 第二次 通信import socket sk = socket.socket() sk.connect(('192.168.12.104',18080))# 连接 sk.send('中文'.encode('utf-8')) sk.close() 一直通信tcp多人通信(必须关闭一个客户端,再进行第二次通信)服务器
import socket sk = socket.socket()# 默认参数 使用基于网络类型的套接字,TCP协议sk.bind(('127.0.0.1',65533))# 回环地址sk.listen()while 1: conn,addr = sk.accept()# 接电话 while 1: msg_r = conn.recv(1024).decode('utf-8') print(msg_r) if msg_r == 'q': break msg_s = input('>>>') conn.send(msg_s.encode('utf-8')) if msg_s == 'q': break conn.close()sk.close()
客户端
import socket sk = socket.socket()sk.connect(('127.0.0.1',65533))while 1: msg_s = input('>>>') sk.send(msg_s.encode('utf-8')) if msg_s == 'q': break msg_r = sk.recv(1024).decode('utf-8') if msg_r == 'q': break print(msg_r) sk.close()
************************************************************************************************
说一说交换机和路由器的区别?
交换机的主要功能是组织局域网,经过交换机内部处理解析信息之后,将信息以点对点,点多对的形式,发送给固定端
路由器的主要功能: 进行跨网段进行数据传输,路由选择最佳路径.
EX:
如果你需要将多台电脑连接到一根网线, 用交换机即可
如果你只有一个外网ip,但是你有好多台电脑需要上网, 用路由器即可
网络基础知识 tcp的更多相关文章
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 网络基础知识、ASP.NET 核心知识(1)*
为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...
- Java 网络编程(一) 网络基础知识
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...
- Linux运维笔记(一)网络基础知识
网络基础知识 一.基本概念 1.ARPANET & TCP/IP:以“软件”技术将网络硬件整合,使得不同的计算机或者数据可以通过这个软件达成数据沟通(TCP/IP技术也被称为Internet) ...
- iOS网络基础知识
iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- 转:TCP/IP协议(一)网络基础知识
转载:http://www.cnblogs.com/imyalost/p/6086808.html 参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知 ...
- TCP/IP协议(一)网络基础知识 网络七层协议
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- 软件开发架构、网络基础知识、osi七层模型
一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
随机推荐
- Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc
Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc 文章转载自 http://iout.in/archives/454.html 我们为什么写作? 自从人们开始写作,写作便是记录. ...
- SVM实现分类识别及参数调优(一)
前言 项目有一个模块需要将不同类别的图片进行分类,共有三个类别,使用SVM实现分类. 实现步骤: 1.创建训练样本库: 2.训练.测试SVM模型: 3.SVM的数据要求: 实现系统: windows_ ...
- HDU 1024:Max Sum Plus Plus(DP,最大m子段和)
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 三值 bool? 进行与或运算后的结果
bool? 实际上是 Nullable<Boolean> 类型,可以当作三值的 bool 类型来使用.不过三值的布尔进行与或运算时的结果与二值有什么不同吗? 本文内容 重载条件逻辑运算符“ ...
- test20181004 排列
题意 分析 容斥公式的意义 选了原图中\(x(x \geq i)\)条边的方案,重复了\(\binom{x}{i}\)次. 有多加多减,所以就是那个式子. 具体而言,对选了x条原图中的边的方案,总共加 ...
- ory Oathkeeper cloud native 访问认证平台
ORY Oathkeeper is an Identity & Access Proxy (IAP) that authorizes HTTP requests based on sets o ...
- python之 利用字典与函数实现switch case功能
Python不像C/C++,Java等有switch-case的语法.不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现. 字典+函数实现switch模式下的四则运算:( ...
- 使用crypto-js的md5加密
官方地址:https://github.com/brix/crypto-js md5加密代码: let CryptoJS = require('crypto-js') let yxcsigns = C ...
- slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade.Facade:门面,更底层一点说就是接口.他允许用户以自己的喜好,在工程中通过slf4j ...
- tomcat和servlet关系
https://blog.csdn.net/weixin_30531261/article/details/78574410 图不错:https://www.cnblogs.com/fengli999 ...