目录
网络编程本质就是两个设备之间的数据交换
IP 域名以及端口
IP:现在是使用ipv4,由4个0-255之间的数字组成,在计算机内部存储只用4个字节。 • 1 Byte = 8 B 域名:就是给IP起一个名字:如163.com,qq.com 端口:为了一个设备上可以运行多个程序,一个设备可以有65536个端口,每个端口对应一个唯一的程序,一般0-1024被操作 系统占用。 如果只用与计算机之间建立连接,只用知道ip即可,如要与计算机上的程序建立连接,需要知道IP+port
网络模型
OSI七层模型 TCP/IP四层模型 TCP/IP五层模型
应用层 应用层 ——————————————————————> 应用层 ——————————————————> 表示层 会话层 传输层 ——————————————————————> 传输层 ——————————————————> 传输层 网络层 ——————————————————————> 网络层 ——————————————————> 网络层 网络接口层 ————————————————————> 数据链路层 ————————————————> 数据链路层 物理层 物理层 TCP/IP四层模型 TCP/IP五层模型 OSI七层模型
ISO/OSI | ||
---|---|---|
应用层 | 传递对象:报文 | |
表示层 | 应用层 | 协议:SMTP FTP TELNET DNS TFTP RPC等 |
会话层 | ||
运输层 | 传输层 | 传输协议分组;协议:TCP,UDP |
网络层 | 网际网层(IP层) | 传输IP数据报;协议:ARP,RARP |
数据链路层 | 网络接口 | 传输帧;网络接口协议(链路控制和媒体访问) |
物理层 | 硬件(物理网络) | 以太网,令牌环,FDDI等 |
物理层:为上层协议(网络接口协议)提供一个传输数据的可靠的物理媒体。 数据链路层:在物理层提供的服务基础上向网络层提供服务,将源自网络层的数据可靠的传输到相邻节点的目标机网络层 基础数据单位是帧(数据链路层的传输单位) 主要协议:以太网协议 设备:网桥,交换机 网络层:负责对子网间的数据包进行路由选择,实现拥塞控制,网络互连等功能。 基础数据单位:IP数据报 主要协议:IP协议(因特网互联协议) ICMP协议(因特网控制报文协议) ARP协议(地址解析协议) RARP协议(逆地址解析协议) 设备:路由器 网络层及以上,每一层都要对上一层发送的数据进行处理(加个头部),数据链路层不仅要加头部还要加尾部,物理 层什么都不加,只管发送数据(比特流) 传输层:将数据可靠的传送到相应的端口。 负责将上层数据分段并提供端到端的,可靠的或不可靠的传输,以及端到端的差错控制和流量控制问题。 主要协议: TCP协议(传输控制协议) UDP协议(用户数据报协议) 设备:网关 应用层:为操作系统或网络应用程序提供访问网络服务的接口 数据传输的基本单位是报文 主要协议: FTP协议(文件传输协议) TELNET协议(远程登陆协议) DNS协议(域名解析协议) SMTP协议(邮件传送协议) POP3协议(邮局协议) HTTP协议(超文本传输协议)
C(A) ——————————————————————————————————————————> C(B) 报文 应用层 DATA|H5 应用层 报文段 传输层 5-PDU|H4 传输层 数据报 网络层 4-PDU|H3 网络层 帧 数据链路层 T2|3-PDU|H2 数据链路层 比特 物理层 01010011101010 物理层
协议
1.TCP/IP(传输控制协议/网际协议): 指能够实现子啊多个不同网络之间传输信息的协议簇,由:FTP,SMTP,TCP,UDP,IP等协议构成。 2.IP协议(因特网互联协议): 网络之间互联的协议,构成互联网的基础,位于网络层 3.ICMP协议(因特网控制报文协议): 面向无连接的协议,用于传输出错报告控制信息(属于网络层协议) 4.ARP协议(地址解析协议): 在网络中各个主机是相互信任的前提下:主机发送信息时将包含目标IP地址的ARP请求广播到局域网上的所有主机,并接 收返回信息,以此确定目标的物理地址。 5.RARP协议(反向地址转换协议): 允许局域网的物理机器从网关服务器的ARP表或缓存上请求器IP地址。 6.TCP协议(传输控制协议): 是一种面向连接的可靠的,基于字节流的传输层通信协议,为了在不可靠的互联网上提供可靠的端到端字节流。 SYN包:TCP连接的第一个包,非常小的一个数据包,当两台计算机在TCP连接上进行会话时,连接首先一定会被初始化, 完成这项任务的包就是SYN包;一个SYN包简单的表明了另一台计算机以已经做好了会话的准备,只有发出服务请 求的计算机才会发送SYN包,如果你拒绝进来的SYN包,它将终止其他计算机打开你计算机的服务。 ACK包:即确认字符。在数据通信中,接收站发送给发送站的一种传输类控制字符,表示发来的数据已确认接收无误。 ACK为1表示确认号有效,为0表示报文中不含确认信息。 FIN:表示正常关闭连接,无异常,没有数据丢失 RST:表示复位,用来异常的关闭连接,在接收端收到RST后,不必发送ACK包确认。 TCP三次握手: 客户端 (SYN) 服务端 报文段1 | ——————————————————————————————> | | (SYN+ACK) | | <————————————————————————————— | 报文段2 | (ACK) | 报文段3 | ——————————————————————————————> | 第一次握手:客户端发送SYN包到服务端,进入SYN_SEND状态,等待服务端确认。 第二次握手:服务端接收到SYN包,必须确认客户端的SYN,同时自己也发送一个SYN包,即SYN+ACK 第三次握手:客户端接收到ACK+SYN,向服务端发送确认包ACK TCP四次挥手: TCP连接是双全工的,因此每个方向都需要单独关闭,这个原则就是当一方完成它的数据发送任务后就能发送一个 FIN来终止这个方向的连接,收到一个FIN就意味着这个方向上没有数据流动。 客户端 (FIN) 服务端 报文段1 | ——————————————————————————————> | | (ACK) | | <————————————————————————————— | 报文段2 | (FIN) | | <————————————————————————————— | 报文段3 | | 报文段4 | ——————————————————————————————> | (ACK) 第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送 第二次挥手:服务端收到这个FIN,返回一个ACK 第三次挥手:服务端关闭与客户端的连接,并发送一个FIN给客户端 第四次挥手:客户端发回ACK报文确认 7.UDP协议: (1)面向无连接的,将数据封装在数据报里,不需要建立连接。 (2)每个数据报的大小限制在64K以内。 (3)没有连接,是不可靠协议。 (4)没有建立连接,速度快。
客户端 服务端
应用层 ——> HTTP客户端 ——————(HTTP协议)——————> HTTP服务器
传输层 ——> TCP ——————(TCP协议) ——————> TCP
网络层 ——> IP —————— (IP协议) ——————> IP
数据链路层 —> 网络 —————— (以太网协议)—————> 网络