基础原理概述
应用开发者眼中的网络:跨主机,两个进程之间的通信
TCP/IP 5层协议
物理层
集线器
工作于物理层
工作任务:复制数据、放大信号
冲突域
【所有主机都可以传输数据】
如何避免?–数据链路层的一种常见冲突避免–静默随机时间后再发送
数据链路层–LAN内部,主机to主机
交换机–减少冲突域
【交换机是划分冲突域】
工作于数据链路层,实现根据数据中的目标地址将数据只发送给对应目标。
物理地址(MAC)
【FF-FF-FF-FF-FF-FF 作为广播地址使用】
网络层–跨LAN,主机to主机–IP协议
路由器–寻路
工作于网络层,工作任务是寻找数据的传输路径
IP地址–网络层
传输层–进程到进程之间通信–TCP/UDP协议
端口号(port)–0~65535两个字节的无符号数
一个端口号只能分配给一个进程
TCP/UDP
TCP不可广播
UDP可以广播
应用层–HTTP/HTTPS/DNS协议
封装与解包/分用
发送:封装
接收:解包+分用
五元组
目标IP、目的端口号、源IP、源端口号、传输层协议
【通过五元组可以确定唯一一条通信线路】
Socket编程–站在应用层
【应用层使用OS提供的网络服务,需要通过OS提供的服务窗口–socket来享受服务】
Java使用UDP协议相关类编程
DatagramSocket类
DatagramPacket类
服务器Server–公开ip、port
【提供服务Service的一类程序】–应用层概念
客户端
【享受服务的角色】
请求与响应
IP协议编程
可靠、有链接、面向字节流
Java使用IP协议相关类
ServerSocket类