Application layer
无论是分布式或者网络应用也好,现在我们更关注的是性能,所以我们更经常地会用到是多线程。
很多大型的底层系统基本只有两个语言的要求C++/JAVA。
花多一些时间在java上
期末大项目 使用java语言自己完成一个http server:重点在于性能的提升。
编程不是智商的问题,而是是否练习的问题。
对于本科生而言,拥有良好的代码能力都是一个非常好的技能点。
Web and HTTP;
electronic mail
JAVA soket API
application Architecture
client-server/browser-server(客户服务器)C/S
client端:web browser;
BS:browser server
但其他不通过浏览器的结构:累银行客户端,应用开发人员开发了两端。
BS架构:HTTP
但若是自己开发的CS可以走其他协议。
BS有时也可以归为CS的一种,二者最大差别是看客户端是否要通过浏览器。
Peer-to-peer(对等)P2P
即没有严格的客户端和服务器的区分,即节点既可以做客户端又可以做服务器。
下载方式:BT/P2P下载。
client-server architecture
Server:
always-on host:高可用/高可靠的方案(以应付一些异常处理)
permanent IP address.
data centers for scaling
可弹性拓展/可扩展性
scalability
一直工作接受链接,相应请求。等待客户端请求
client:
- Communicate with server.
- dynamic IP address(DHCP)
客户端与客户端之间并不直接交流。
以自动驾驶为例:CV(计算机视觉)
P2P architecture
- 自拓展能力
- 每个节点既可以是client也可以是server
- 任何一个节点加进去既是服务器又是客户端,去中心化的对等的。
- 网络管理比CS要复杂。
Communication
Process:进程间的通讯
更关心的是在不同主机上的两个进程的通讯方式。
CS:
client process:发起通讯的主动方;
server process:监听:在固定端口号上监听,看是否有客户端要与我发起请求。waits to be contacted.
P2P:客户端进程和服务器端进程同时运行在同一个节点。
BT:既可以接受别人,也可以从别人那下载。
Sockets:两台进程上的soket通讯
标示一个socket: IP 地址 + 端口号。
端口号:标示进程。
如何建立套接字?
基于TCP/UDP:基于哪个传输层的服务。
Socket c.f.门:往外发:socket,接受:socket
两台主机上的进程通讯方式:socket
同一主机上的进程通讯:共享内存/管道/信号等(操作系统课)
标示进程:addressing processes
主机的标示:IP 地址 ipconfig
进程的标示:主机上有很多进程,所以不能使用IP地址标示
故表示进程:IP地址+端口号
有一些端口号是被保留下来的:c.f.保留字
HTTP server:80; mail server 25
APP-layer protocol defines.
应用层的协议定义什么呢?
Open protocols: defined in RFCs
传输层为应用层提供什么服务呢?
Transport service Requirements for common apps.
不同的应用对传输层提供服务的要求是不一样的。传输层为应用层服务嘛。
Data integrity(数据完整性)
Timing(定时):对延时是有限制的
Throughput(吞吐)elastic:没有强制的要求。
security:
wireshark工具:抓包工具,如果网络传输的过程没有加密,数据与否
securing TCP
SSL socket API:在数据传输的过程中,在TCP/UDP上再加一层SSL层
传输过程的密文/明文
数据库的密文/明文
数据泄漏时:库被泄漏时,可以利用用户不同账户间密码都相同,撞库就很容易把密码套出来。
所以可以自己在输入密码时,调用一个密码加密的包。
传输层服务
TCP服务
- 流量控制:接受方和发送方之间的速率要匹配。
- 拥塞控制:整个网络网络过载时要使发送方稍微慢一些。
UDP服务
TCP 保证的UDP很多都不保证
但仍有一些应用时支持TCP的,如streaming multimedia.