internet因特网
1.1 internet因特网
起源于美国五角大楼,前身是美国国防部高级研究计划局(ARPA)主持研制的ARPAnet
之后各个国家组织的网络都连进去,形成全球性的大网络
互联网协议用TCP/IP协议,早期局域网没有用TCP/IP协议,现在都是TCP/IP协议
http协议,早期用来传输超文本标识语言(HTML)
通过html来传输图片等,不只是文字
1.2internet和中国
1987年,钱天白(搞物理的),利用电话拨号连接国际互联网,给德国朋友发
1990年钱天白注册顶级域名CN
之后各个机构专线部分功能接入
1994年用64K专线全功能接入跟国际互联网
成为第77个成员
1995年“瀛海威”提供普通家庭连接互联网的商业机构
1996年中国互联网全国骨干网建成并正式开通
1995年4月马云凑了两万,成立杭州海博网络公司,专门给企业做主页
1997.5 丁磊创建网易
1998.2 张朝阳创建搜狐
1998.6.18刘强东在中关村创建京东公司,代理销售光磁产品
1998.11 马化腾和张志东成立深圳腾讯激素那几系统有限公司,OICQ开通
1998.12 新浪网成立,关键人物:王志东
1999.5.18 中国第一家电子商务企业8848.com成立
2000.1 李彦宏创建百度
八条光缆,4个登陆战允许入境
基于socket的主机网络通讯
这个知识应该在前面的tcpip协议上的补充,也是对osi七层模型的补充
应用层和传输层之间的,socket抽象层
1.1 socket是什么
socket套接字(IP+端口)
IP唯一的标识网络中的设备
端口:唯一标识设备的某个应用程序
socket是主机网路通信最基础的要求
1.2 socekt API(库与应用程序的接口)
Soceket Domain:根据用的地址
AF_INET:IPV4
AF_INET:IPV6
AF_UNIX:同一主机上不同进程间的通信
Socket Type:根据使用的传输层协议
SOCK_STREAM:流,tcp套接字,可靠传递,面向连接
SOCK_DGRAM:数据报,udp套接字,不可靠传递,无连接
(用的很少)SOCK_RAM:裸套接字,无需tcp或udp,app直接通过ip包通信
以后学python不会这么调用的,因为过于底层
做软件开发man socket 有很多选项和接口
如果用c写的话,要调用
以后无论做c还是python开发,最终的都是调用socket
1.3 套接字相关的系统调用(应用程序与os的-用户访问os内核是通过系统调用实现的)
socket() 创建套接字
bind()绑定ip和端口
listen()监听
accept()接收请求
connect()请求建立连接
write()发送
read()接收
close()关闭连接
1.4 socket通信的python3实现
vim tcpclient.py
import socket
HOST='10.0.0.52'
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((HOST,PORT))
sock.send(b'hello,tcpserver!I am tcpClient')
recv=sock.recv(BUFFER)
print('[tcpServer said]:%s' %recv.decode())
sock.close()
vim tcpsever.py
import socket
HOST='0.0.0.0'
PORT=9527
BUFFER=4096
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(3)
print ('tcpServer listen at:%s:%s\n\r' %(HOST,PORT))
while True:
client_sock,client_addr=sock.accept()
print('%s:%s connect ' %client_addr)
while True:
recv=client_sock.recv(BUFFER)
if not recv:
client_sock.close()
break
print('[client %s:%s said]:%s' %(client_addr[0],client_addr[1],recv.decode()))
client_sock.send(b'tcpServer has received your message')
sock.close()
python3的缩进很严格
访问网站时候,背后发生了什么
dns解析,把名字解析ip地址
和对方主机连接3次握手4次挥手
建立连接后就会发送http请求
通过http请求和对方传输数据
从对方的服务器获取返回的html信息(一般)
浏览器收到html页面后解释执行
从互联网上的得到的实际是一端html源码
从源码到页面的过程叫渲染
渲染过程:构建DOM树,构建CSSOM树,构建渲染树,合成绘制
http协议通信过程
1.1 历史
发明人:蒂姆-伯纳斯-李
http是促进互联网发展的重要的协议
最早的互联网应用不是http协议,是吖db协议
http-超文本传输协议
早期就是传文本的,可以看到更多的效果,颜色或者图片等等
文本的太简陋了,可以显示出大小颜色效果,将网页显示的更生动好看
1984年
后期http标准由万维网协会推广
http版本最主流1.1版本
http通讯过程和socket传输差不多
1.2Http服务通信过程
获取ip和端口
创建套接字
连接到服务器IP:port上
1.3http协议分层
参考:
https://juejin.cn/post/6844904097405992968
这个要加一层应用层http报文
也就是切片的数据是http报文
Http相关技术和术语
1.1 WEB开发语言
http:应用层协议-超文本传输协议 ,默认端口80/tcp
WEB前端开发语言
html
css
javascript
WEB后端开发语言
并发量高的
java
go
中小公司
php
python
1.2 html-Hyper Markup Language 超文本标记语言-负责实现页面的结构
范例:
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charaset=utf-8">
<title>HTML语言</title>
</head>
<img src="https://www.baidu.com/img/bd_logo1.png">
<h1 style="colo:red">欢迎</h1>
<p><a href=http://www.baidu.com>百度</a>欢迎你</p>
</body>
</html>
1.3 CSS-Cascading Style Sheet 层叠样式表,定义了如何显示(装扮)HTML元素,比如:字体大小,颜色属性等,通常保存在外部的.css文件种
通过仅仅编辑一个简单的css文档,就可以同时改百年站点中所有页面的布局和外观
范例:CSS
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href="mystyle.css"/>
</head>
<body>
<h1>这是heading 1</h1>
<p>这是一段普通的段落,请注意,改段落的文本是红色的,在body选择器中定义了本页面的默认文本颜色。</p>
<p class="ex">该段落定义了 class="ex".该段落大的颜色是蓝色的</p>
</body>
</html>
body {color:red}
h1 {color:
p.ex {color:rgb(0.0.255)}
1.4 js-javascript,实现网页大的动画效果
范例:JavaScript-和java没有任何关系
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
</head>
<body>
<h2>我的第一段 javascript</h2>
<button type="button" onclick="document.getElementById('demo').innerHTML=Date()" >
点击这里来先死日期和时间
</button>
<p id="demo"></p>
</body>
</html>
总结:上面的三种语言都是前端工程师要掌握的,我们是运维工程师,不要求精通,至少要了解,只要知道三种大概有什么功能就可以了,如果以后要做网页开发就要懂了