OSI七层模型
应用层 :提供各种应用程序的接口
表示层:数据加密、格式转换
会话层:建立、管理、维护、会话
传输层:建立端对端的连接
网络层:IP寻址和路由选择
数据链路层:流量控制、链路管理
物理层:规范电压和接口
TCP/IP四层模型
应用层:应用层协议(规定发送和回复数据的格式和方法)
http,FTP,TFTP,QQ协议...
传输层(TCP/UDP)
主要作用是解决数据如何传输的问题
TCP(Transport Control Protocol):传输层控制协议
是一种面向连接的传输层协议,它能够提供高可靠性的通信(即数据无误,数据无丢失,数据无失序,数据无重复到达)
TCP是如何保证数据数据无误,数据无丢失,数据无失序,数据无重复的?
三次握手("面向连接") 、 重发机制 、 流量控制(滑动窗口机制) 、四次挥手
UDP (User DataGram Protocol)用户数据报协议
是一种不可靠的面向无连接的协议,在数据发送前不需要经过连接,一般用来进行高效率的数据传输."实时应用"
网络层(IP网际协议,IGMP互联网组管理协议,ICMP互联网控制报文协议(PING))
PING:测试网络是否可达 ping 192.168.10.1
它的功能是把数据包发送给目标主机或者目标网络,为了尽快的发送数据包,可能会沿不同的路径同时发送,所有数据包到达的顺序和发送的顺序可不同,需要上层(传输层)对数据包排序。
数据链路层(物理层)
各层之间的联系
每一层实现自己的功能和协议,并且都为上一层提供业务功能,下一层一般会把上一层的数据并入到本层数据中,通过加入报头和报尾来实现该层的业务功能,该过程叫做数据的封装.用户数据要经过一次次的封装最后转换为可以在网络上传输的信号,到达目标计算机后,再执行相反的拆包过程。
SOCKET接口
一个网络编程接口,是一个特殊的文件描述符(可以认为socket就是一个文件描述符)
可以使用文件IO中的API接口去直接操作的(write/read)
这个接口位于传输层和应用层之间
认为:
你需要发送数据给网络上的其他人,只需要把数据写入socket中即可
socket类型:
(1).流式套接字(SOCK_STREAM) 数据流
面向字节流,针对传输层协议为TCP的应用程序
只能处理TCP协议的数据
(2).数据报套接字(SOCK_DGRAM)
针对传输层协议为UDP的应用程序
只能处理UDP协议的数据
(3).原始套接字
直接跳过传输层,直接访问网络层的数据包
基本的TCP/UDP的编程流程
CS结构
Client(客户端,可以主动向服务器发送请求)
IP + 传输层协议 + 端口号
Server(等待客户端的连接,处理客户端的请求)
IP + 传输层协议 + 端口号