一、OSI(开放式系统互联)七层模型
应用层(如qq等应用程序):
常见协议:HTTP,HTTPS,FTP,POP3、SMTP等;
数据构成:报文
传输层(建立端到端的链接):
常见协议:TCP, UDP;
数据构成:TCP:(报文段)、UDP:(用户数据)
网络层(将数据从源端传输到目的端):
常见协议:IP;
数据构成:包或者IP数据报
数据链路层(在局域网中实现主机与主机间的数据交换):
常见协议:PPP,FDDI;
数据构成:帧
物理层(物理底层):
常见协议;
数据构成:比特
二、请求及相应构成
1.请求报文
上图中主要记住请求报文的组成:请求行(主要包括请求方法,URL,版本协议)、请求头、请求体。
其中,请求行的请求方法常用的有:get、post;
get方法与post方法的区别:
get方法将参数和对应的值放在请求头中;
post方法将请求的参数与值放在请求体中;
get只会发送一个TCP数据包,POST会发送两个TCP数据报;(post第一次发送是为了告诉目的端:即将发送数据,请接收)
2.相应报文
上图中主要记住响应报文的组成:状态行,响应头,响应体。
状态行包括协议版本(请求头也有),状态码(下文另作说明),状态码描述。
状态码:
- 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
- 2xx:表示服务器已成功接收到请求并进行处理;
- 3xx:表示服务器要求客户端重定向;
- 4xx:表示客户端的请求有非法内容;
- 5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
三、传输层中的TCP/UDP协议
常用端口:
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(tap) |
常见端口 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 |
1.UDP
a.特点:
- 无连接的(发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延)
- 尽最大努力交付(不保证可靠交付,因此主机不需要维持复杂的连接状态表)
- 面向报文的(UDP对应用层交下来的报文,添加完首部后就直接交付IP层。如果太长就会分片)
- UDP没有拥塞控制
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP的首部开销小(只有8个字节,TCP有20个字)
b.UDP报文
如果接受方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程),就会丢弃报文,并有网际控制报文协议ICMP(ping某个地址就是用的ICMP)发送“端口不可达”差错报文给发送方。
UDP用户数据报首部检验和计算时会在UDP用户数据报前增加12个字节的伪首部。
注:数据部分存放在UDP首部下方,本图未展现出来。
2.TCP
a.特点
- 面向连接的运输层协议。
- 点对点(一对一)通信。
- 可靠交付。
- 全双工通信(TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据)。
- 面向字节流。
b.TCP可靠传输工作原理
停止等待协议
每次发送数据报后,都会等待回传确认,待确认成功后,才会继续发送其他数据报;若长时间没有收到M1的确认报文,会重新发送M1报文(超时重传);若发送成功,没有接收到M1确认会再次发送,对接收端来说,重新接受M1后,回丢弃之前传来的M1(保留最新的数据);若收到迟到的M1确认,则什么也不做。
停止等待协议缺点:信道利用率低
改进:
连续ARQ协议和滑动窗口协议
c.TCP报文格式
- 源端口和目的端口,各占2个字节,分别写入源端口和目的端口;
- 序号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;
- 确认号,占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701;
- 数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远;
- 保留,占6位,保留今后使用,但目前应都位0;
- 紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;
- 确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
- 推送PSH,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;
- 复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
- 同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
- 终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
- 窗口,占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受;
- 检验和,占2字节,校验首部和数据这两部分;
- 紧急指针,占2字节,指出本报文段中的紧急数据的字节数;
- 选项,长度可变,定义一些其他的可选的参数。
3.TCP三次握手四次挥手
1.三次握手
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
完成三次握手,主机A与主机B开始传送数据。
客户端TCP向服务端TCP发送一个特殊的TCP报文段,不包含应用层数据,报文中SYN=1,设置一个初始号client_isn,记录在报文段的序列号seq中。
SYN报文段到达服务器后,为该TCP链接分配缓存和变量,并向客户端发送允许链接的报文段。其中,SYN = 1, ACK = client_isn+1,seq = server_isn;
客户端收到允许连接的报文后,客户端也给连接分配缓存和变量,客户端向服务端发送一个报文段,其中ACK = server_isn+1,SYN = 0,并且由于连接已经建立所以现在可以携带应用层数据。
TCP四次挥手
1. 客户端发送连接释放报文段,报文中FIN = 1, seq = u;
2. 服务端接收到连接释放报文后发出确认报文,其中ACK = 1; seq = v; ack = u + 1;
3. 服务端在发送完数据后,发送连接释放报文FIN = 1, seq = w, ack = u + 1;并停止向客户端发送数据。
4. 客户端收到连接释放报文后,发送确认报文, ACK = 1; seq = u + 1; ack = w + 1;并且进入等待2MSL,防止服务端没有接收到确认报文,重传报文。并且使连接产生的报文都消失。
TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。
简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:
1. 服务器读通道关闭
2. 客户机写通道关闭
3. 客户机读通道关闭
4. 服务器写通道关闭
四、网络层
IP地址分类:
- A类:1.0.0.0~126.255.255.255,默认子网掩码/8,即255.0.0.0 (其中127.0.0.0~127.255.255.255为环回地址,用于本地环回测试等用途);
B类:128.0.0.0~191.255.255.255,默认子网掩码/16,即255.255.0.0;
C类:192.0.0.0~223.255.255.255,默认子网掩码/24,即255.255.255.0;
D类:224.0.0.0~239.255.255.255,一般于用组播
E类:240.0.0.0~255.255.255.255(其中255.255.255.255为全网广播地址),E类地址一般用于研究用途
五、路由器交换机工作原理及区别
1.路由器工作原理
路由器工作在OSI七层协议中的第三层,也就是网络层。其主要任务是接收来源于一个网络接口的数据包,根据这个数据包中所含的目地址,决定转发到的下一个目的地址。路由器中时刻维持着一张路由表,所有的数据包的发送和转发都通过查找路由表来实现的。这个路由表可以静态配置,也可以通过动态路由协议产生。
路由器物理层从路由器的一个端口收到一个报文,上送到数据链路层。数据链路层去掉链路层封装,根据报文的协议域上送到网络层。网络层首先看报文是否是送给本机的,若是,去掉网络层封装,送给上层。若不是,则根据报文的目的地址查找路由表,若找到路由,将报文送给相应端口的数据链路层,数据链路层封装后,发送报文。若找不到路由,报文丢弃。
2.交换机工作原理
交换机是一种工作在OSI七层协议中的第二层,也就是数据链路层,可以对电信号进行转发,为接入交换机的任意两个网络结点提供独享的电信号通路,对接入的信息重新生成,通过内部处理转发到指定端口,达到自动寻址和交换的作用,避免端口冲突问题,提高网络吞吐量的网络设备。
3.路由器与交换机区别
路由器工作在OSI协议的第三层,网络层;交换机工作在OSI协议的第二层,数据链路层。
参考:
作者:vip97yigang
来源:CSDN
原文:https://blog.csdn.net/vip97yigang/article/details/78306837?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
https://blog.csdn.net/vip97yigang/article/details/78306837
---------------------
作者:TimeTDIT
来源:CSDN
原文:https://blog.csdn.net/qq_35580883/article/details/78879848?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!