1、简述osi七层模型和TCP/IP五层模型
OSI 7层模型
第7层 应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等针对特定应用的协议。
第6层 表示层
主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式 设备固有数据格式和网络标准数据格式的转换
第5层 会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。 通信管理,负责建立和断开通信连接(数据流动的逻辑通路)管理传输层以下的分层。
第4层 传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议 等发送信息。例如:传输控制协议(TCP)等。 管理两个节点之间的数据s传输,负责可靠传输(确保数据被可靠地传送到目标地址)
第3层 网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。 网络表头包含了网络数据。例如:互联网协议(IP)等。地址管理和路由选择问题“解决走哪条路问题” ,比如网络设备路由器
第2层 数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形 成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链 表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务 (GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制 (Media access control,MAC)子层 解决子网内部通信问题,互联设备之间传送和识别帧
第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网 络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等
TCP/IP 介绍
Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议 TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多 协议 最早发源于1969年美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取 代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护 3.1.2 TCP/IP 分层 共定义了四层,和OSI参考模型的分层有对应关系
TCP/IP和OSI模型的比较
相同点 两者都是以协议栈的概念为基础 协议栈中的协议彼此相互独立 下层对上层提供服务
不同点 OSI是先有模型;TCP/IP是先有协议,后有模型 OSI是国际标准,适用于各种协议栈;TCP/IP实际标准,只适用于TCP/IP网络 层次数量不同
2.总结描述TCP三次握手四次挥手
TCP 三次握手
第一步:客户端发送SYN 给服务端,并从closed 调整SYN-SENT状态
第二步:服务端收到SYN后发送ACK SYN给客户端表示收到请求并要求对方反馈是否收到信息,从LISTEN 调整为SYN-RECEIVED 状态
第三步:客户端收到服务端反馈后发送ACK 给服务端,表示可以收到信息。双方开始通信调整到ESTABLISHED 状态
TCP 四次挥手
第一步:客户端发送FIN给服务端,并从ESTABLISHED 变成FIN-WAIT1
第二步:服务端收到FIN后通知应用进程并发送ACK确认给客户端,状态从ESTABLISHED变成CLOSE-WAIT,客户端收到ACK后从FIN-WAIT1 到FIN-WAIT2
第三步:服务端发送FIN ACK 给客户端,从CLOSE-WAIT 状态到LAST-ACK
第四步:客户端收到服务端FIN ACK后发送ACK确认,并从FIN-WAIT2 到TIME-WAIT, 服务端收到ACK后从LAST-ACK 变成CLOSED 状态,客户端等待2MSL 数据传送后由TIME-WAIT变成CLOSED,双方通信断开。
客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1状态,这时等待接收服务端报文,该报文会有三
种可能:
只有服务端的ACK
只有服务端的FIN
基于服务端的ACK,又有FIN
1、只收到服务器的ACK,客户端会进入FIN_WAIT_2状态,后续当收到服务端的FIN时,回应发送一个
ACK,会进入到TIME_WAIT状态,这个状态会持续2MSL(TCP报文段在网络中的最大生存时间, RFC
1122标准的建议值是2min).客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。因为
服务端在等待超时后会再发送一个FIN给客户端,进而客户端知道ACK已丢失
2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接收到服务端的ACK时,进
入TIME_WAIT状态
3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态
有限状态机 FSM:Finite State Machine
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
3.描述TCP和UDP区别
TCP特性:
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
TCP协议PORT
传输层通过port号,确定应用层协议,范围0-65535
0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统应用使用, 22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用, 1433/tcp(SqlServer), 1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp (memcached)
49152-65535:动态或私有端口,客户端随机使用端口,范围定 义:/proc/sys/net/ipv4/ip_local_port_range
UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
UDP包头