网络分层模型
OSI七层模型
作用:为了方便大家去理解网络通信的整个流程,人为地把计算机网络划分为七个层次
划分标准:
应用层 开发面向用户的应用程序,需要用到这个层次中对应的通信协议
http协议(超文本传输协议,开发网页) ftp协议(文件传输协议) telnet协议(远程登录)
会话层 主要功能是定义数据格式及加密
表示层 建立会话
传输层 用来传输数据 tcp协议 udp协议(掌握的重点)
网络层 找到数据传输的最优路径(路由功能) ip协议(底层通信设备厂商需要掌握)
数据链路层 开发网卡的驱动
物理层 具体的硬件设备
网络协议:
老外给七个层次,每个层次都制定了很多通信协议(网络协议,游戏规则)
TCP/IP模型
把七层模型简化成了四层
应用层
会话层
表示层 ---》合并称为应用层
传输层 ---》传输层
网络层 ---》IP层,网际层
数据链路层
物理层 ---》网络接口层
tcp通信:面向连接可靠的通信方式
流程:
客户端: 创建套接字socket (SOCK_STREAM)流式 服务器:创建套接字socket
bind bind
connect listen
send/recv accept
close send/recv
close
TCP客户端在连接服务器的时候,tcp底层会经历三次握手:目的--》通信双方互相确认身份
一次握手:客户端给服务器发送SYN(同步信号)
二次握手:服务器收到客户端发送的SYN信号后,给客户端发送SYN(同步信号)+ACK(应答信号)
三次握手:客户端收到后给服务器发送ACK(应答信号)
tcp通信双方断开连接的时候:四次握手:
一次捂手:客户端给服务器发送FIN(结束信号)
二次握手:服务器收到后给客户端发送ACK(应答信号)
三次握手:延时一段时间后,服务器继续给客服端发送FIN(结束信号)
四次握手:客户端收到后给服务器发送ACK(应答信号)
可靠:tcp协议支持错误重传,校验数据,不容易丢失数据包
应用场合:通信要求比较高,传输账号密码
UDP无连接的不可靠的通信方式:
通信的流程
udp谁先发送谁就是发送端
发送端 接收端
socket(SOCK_DGRAM) socket(SOCK_DGRAM)
bind() bind()
收发信息(sendto/revefrom) 收发信息(sendto/revefrom)
close() close()
无连接:没有三次握手的过程
不可靠:网络状况不好的时候,容易丢失数据包
应用场景:比如视频点播,udp占用带宽资源比较少