目录
分组交换的两种传输方式
数据报方式
不需要连接,想UDP就不需要,因此他传输数据的方式就是数据报方式
虚电路方式
像TCP属于面向连接的,因此传输数据的时候使用的方式为虚电路方式
OSI参考模型
大量数据----报文(因为加了TCP或者UDP报头)--分组(加了IP地址)--帧(加了目的MAC地址)--比特(0/1)
其实过程相当于送快递,快递(数据) -- 选择快递公司比如邮政(加了TCP或者UDP报头-分组) -- 写地址(省+市+县+小区) -- 小区的栋和门牌号 -- 送到你门口--解包,对你的信息,一层一层的对
IP地址分类
公有IP
可直接连接Internet),经由InterNIC所统一规划的IP,公有IP用完了,而且平常人是拿不到公有IP的,我们使用的都是私有IP然后连接公有IP(宽带拨号)
私有IP
不可直接连接Internet ,主要用于局域网络内的主机联机规划,也是我们日常生活中最常见的IP,我们使用宽带的时候,营业厅会帮我们把私有IP挂在公有IP上进行使用,像我们会拨号处理
回环ip地址
通常 127.0.0.1 称为回环地址
功能
主要是测试本机的网络配置,能ping通127.0.0.1说明本机的网卡和IP协议安装都没有问题
注意127.0.0.1~127.255.255.254中的任何地址都将回环到本地主机中,不属于任何一个有类别地址类,它代表设备的本地虚拟接口
子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码是一个32bit由1和0组成的数值,并且1和0分别连续
作用:指明IP地址中哪些位标识的是主机所在的子网以及哪些位标识的是主机号(从而知道你是哪一个网段的)
特点:必须结合IP地址一起使用,不能单独存在,IP地址中由子网掩码中1覆盖的连续位为子网ID,其余为主机ID
子网掩码的表现形式
192.168.220.0/255.255.255.0
192.168.220.0/24
端口
TCP/IP协议采用端口标识通信(网络)的进程,用于区分一个系统里的多个进程
跨系统、跨主机通信
在系统编程中,我们使用进程号(PID)来表示主机的不同进程,并且进行主机内部进程的通信,但是由于无法跨主机通信,因为相同的PID,在不同主机可能表示不同的进程,比如在A主机12表示QQ,但是在B主机上可能表示微信,因此两者无法通信,但是端口是我们人为规定,在不同主机上相同的进程使用相同的端口号
特点
- 对于同一个端口,在不同系统中对应着不同的进程(不同的进程是因为在不同系统,但是我可以理解为相同的APP)
- 对于同一个系统,一个端口只能被一个进程拥有
- 一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程送交传输层的数据也通过该端口被送出
端口的本质是一个缓冲区,在传输层的时候,定义一个缓冲区,专门服务于不同的APP(应用层),APP只能把消息放在对应的缓冲区中(端口),然后这个数据会被传输(通过网络),然后到了对方的传输层,对方的传输层正好也存在缓冲区(端口),并且两者的端口号是一样的,那么这个数据就会被送到对应的端口中,被APP读写
端口号
类似pid标识一个进程;在网络程序中,用端口号(port)来标识一个运行的网络程序
特点
- 端口号是无符号短整型的类型
- 每个端口都拥有一个端口号
- TCP、UDP维护各自独立的端口号
- 网络应用程序,至少要占用一个端口号,也可以占有多个端口号
端口分类
知名端口(1~1023)
由互联网数字分配机构(IANA)根据用户需要进行统一分配,我们尽量不要使用,因为可能会影响其他端口的进程。例如:FTP—21,HTTP—80等
动态端口(1024~65535)
应用程序通常使用的范围
注意
端口号类似于进程号,同一时刻只能标志一个进程.可以重复使用,因为端口号能释放
数据包的组装、拆解
大量数据----报文(因为加了TCP或者UDP报头)--分组(加了IP地址)--帧(加了目的MAC地址)--比特(0/1)
其实过程相当于送快递,快递(数据) -- 选择快递公司比如邮政(加了TCP或者UDP报头-分组) -- 写地址(省+市+县+小区) -- 小区的栋和门牌号 -- 送到你门口--解包,对你的信息,一层一层的对
网络应用程序开发流程
选择合适的协议(TCP或UDP)
TCP—面向连接
电话系统服务模式的抽象
每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程,本质上,连接是一个管道,收发数据不但顺序一致,而且内容相同,保证数据传输的可靠性
UDP—面向无连接
邮件系统服务模式的抽象
每个分组都携带完整的目的地址
不能保证分组的先后顺序
不进行分组出错的恢复和重传
不保证数据传输的可靠性
无论采用面向连接的还是无连接,两个进程通信过程中,大多采用C/S架构。client向server发出请求,server接收到后提供相应的服务,在通信过程中往往都是client先发送请求,而server等待请求然后进行服务
C/S架构示例(面向连接)
server工作过程
打开一通信通道并告知本地主机,它愿意在一特定端口(如80)上接收客户请求。等待客户请求到达该端口,接收客户请求,并发送应答信号,激活一新的线程处理这个客户请求,服务完成后,关闭新线程与客户的通信链路
client工作过程
打开一通信通道并连接到服务器特定端口,向服务器发出服务请求,等待并接收应答,根据需要继续提出请求,请求结束后关闭通信通道并终止