网络基础知识 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类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
随机推荐
- 关于XCode 的agvtool命令行
简介:用agvtool如何来自动更新版本号和bulid version agvtool是一个命令行工具,允许你自动递增到下一个最高的数量或具体的数字这些数字.本文档提供了更新您的构建和版本号码使用 ...
- poj-1170 (状态压缩形式下的完全背包)
#include <iostream> #include <algorithm> #include <cstring> using namespace std; ; ...
- java面试题12
1. jsp与servlet的区分? 答:Servlet和JSP都是基于java语言上的动态网页技术,Servlet程序其实就是java程序,只不过它所使用的类库为JAVA Servlet API, ...
- 度限制最小生成树 POJ 1639 贪心+DFS+prim
很好的解题报告: http://blog.csdn.net/new_c_yuer/article/details/6365689 注意两点: 1.预处理环中权值最大的边···· 2.可以把去掉度限制后 ...
- leetcode:Valid Palindrome【Python版】
1.注意空字符串的处理: 2.注意是alphanumeric字符: 3.字符串添加字符直接用+就可以: class Solution: # @param s, a string # @return a ...
- dbt 生产环境使用
可以使用如下方式: 云主机或者普通的机器 使用 airflow 使用 Sinter, 一个托管的dbt runner 常见问题: 如何管理权限? 可以使用hooks 进行配置用户组以及权限 说明 实际 ...
- nyoj 单调递增子序列(二)
单调递增子序列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...
- 【转】每天一个linux命令(61):wget命令
原文网址:http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于 ...
- 【转】每天一个linux命令(24):Linux文件类型与扩展名
原文网址:http://www.cnblogs.com/peida/archive/2012/11/22/2781912.html Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概 ...
- cookie、localStorage、sessionStorage 的生命周期
生命周期 存储 生命周期 cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下. ...