网络
网络是几乎可以实时相互发送和接收数据的计算机和其它设备的集合。
网络通过常用线缆连接,数据位转换为电磁波,通过线缆移动。无线网络会通过无线电波传输。
节点:网络中的每一台设备称作节点(node)。
每个网络节点都有地址(address),这是用户唯一标识节点的资格字节序列。
网络的分层
为了对应用程序开发人员和用户隐藏这种网络传输的复杂性(协调网络的物理特性、发送数据的逻辑特征、避免包冲突,将数字数据转换为模拟信号、检测和修正错误),网络通信的不同方面被分解为多个层。每一层表示为物理硬件(线缆和电流)与所传输信息之间的不同抽象层次。每一层只与紧挨的上下层对话。将网络分层,这样就可以修改甚至替换某一层的软件,只要层与层之间的接口不变,就不会影响到其它层。
TCP/IP四层模型:
应用层 (浏览器、手机等)-- 向服务器发送网页的请求, 实际上只与本地客户机的传输层对话。
传输层(TCP、UDP)-- 将请求分解为TCP片,向数据添加序列号和校验和,然后将请求传递给本地网际层。
网际层(IP)-- 根据本地网络所需的大小将各TCP片分解成IP数据报,并传递到主机网络层。
主机网络层(以太网,WIFI,LTE等)-- 将数字数据编码为适合特定物理介质的模拟信号,将请求发送到线缆。目标地址的远程系统的主机网络层可以由此读取请求。
IP、TCP和UDP
IP:国际协议,IP被设计为允许任意两点之间有多个路由,可以绕过被破坏的路由器实现数据包的路由。IP是开发的、与平台无关。
TCP:因为两点之间存在多个路由,并且两点之间的最短路由路径可能由于网络业务流量或者其他因素而改变,所以数据包可能不会使用相同的路由,另外即使它们全部到达也不会以发送的顺序到达,为了改进这种机制,将TCP置于IP之上,使连接的两端能够确认接收到IP包,以及请求重传丢失或被破坏的包。
UDP:如果单个包的丢失不会影响整个数据流,那么可以使用UDP包发送数据,UDP不保证包一定到达目的地,也不保证顺序相同。
Internet
Internet是世界上最大的基于IP的网络,它是可以使计算机相互对话的一个无组织的集合。
Internet地址分块:为了避免相同IP不通计算机出现,提供的解决方案。
网络地址转换:由于IPv4的地址越来越稀疏,大多网络都是用网络地址转换(Network Address Translation,NAT),如今IPv6可以解决这个问题。
防火墙:位于Internet和本地网络之间的一些硬件和软件会检查所有进出的数据,以保障其合法性(firewall)。
代理服务器:防火墙会阻止一个网络上的主机与外界建立联系,代理服务器就起到了中间人的作用。我们可以请求代理服务器的Web页面,而不是直接请求远程Web有防火墙的页面。
客户/服务器模型
客户/服务器应用程序一般将大量数据存储在昂贵的高性能服务器或云上,而程序逻辑和用户界面由客户端软件处理。
Internet标准
关于应用层网络编程和协议的大多数标准都由IETF(Internet Engineering Task Force,Internet工程任务组)和W3C(World wide web Consortium,国际互联网协会)。
IETF是民间团体,向所有感兴趣参数的人开放。IETF标准包括TCP/IP、MIME和SMTP。
W3C是厂商组织,由缴纳会费的成员公司控制,拒绝个人参与。W3C标准包括HTTP、HTML和XML。