网络基础知识 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类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
随机推荐
- TimeSpan格式化字符串格式(摘)
一直在用DateTime, 却不常用TimeSpan , 今天突然用到了, 发现不知道咋做格式化...百度一下,找到了答案, 在这记录一下, 免得以后找花费时间 以下内容摘抄自 Microsoft D ...
- set 与 map 的第一次尝试
map 杭电6015http://acm.hdu.edu.cn/showproblem.php?pid=6015 基本用法:map<string,int>mp; mp[class[ i ...
- List和json数组的转换(赋源代码)
public class a11111111 { //参数obj可以是 json对象,字符串, list public static void fun(Object obj){ JSONArray d ...
- 编程实现C库函数
1.memcpy函数 memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域):拷贝多少个?有一个size变量控制拷贝的字节数: 函数原型:void * ...
- Oracle GI 日志收集工具 - TFA 简介
转载自:https://blogs.oracle.com/Database4CN/entry/tfa_collector_%E4%BB%8B%E7%BB%8D 1.TFA的目的: TFA是个11.2版 ...
- Angular 4 绑定
一.事件绑定 1. 创建doOnClick函数 2. 网页中绑定doOnClick方法 3. 效果图 二. 属性绑定 1. 定义imgUrl的网址 2. 定义img src属性 另外一种写法 3. ...
- golang 自定义类型的排序sort
sort包中提供了很多排序算法,对自定义类型进行排序时,只需要实现sort的Interface即可,包括: func Len() int {... } func Swap(i, j int) {... ...
- 【jmeter】jmeter测试手机app的服务器压力
具体步骤: 1.电脑启动jmeter 2.jmeter在测试计划新建线程组. 3.在工作台新建http代理服务器 4.配置HTTP代理服务器 5.设置IE代理到本地 6.手机wifi设置代理连接到PC ...
- 【selenium】HTMLTestRunner测试报告生成
__author__ = 'Administrator' #coding=utf-8 from selenium import webdriver from selenium.webdriver.co ...
- Selenium2+python自动化42-判断元素(expected_conditions)
前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...