一.先来谈谈OSI七层模型
物理层(比特流)-》数据链路层(帧)-》网络层(分组[数据报])-》传输层(分段)-》会话层-》表示层-》应用层
1.物理层(理解为网卡)
用来定义物理设备的标准,比如网线类型,光纤类型,各种传输介质传输速率等。
2.数据链路层:(交换机)[这层的协议的代表包括PPP STP SDLC等,这一层的单位是帧]
目的:从物理层传来的比特流可能传输有错,或者传输漏掉。所以格式化数据,提供错误检测和纠正,从而保证数据的可靠。
流程:将比特流组合成字节,再将字节组合成帧。交换机对帧解码,并根据帧中包含的信息发送出去。
-》简单说就是:封装成帧、透明传输、差错检测
1)封装成帧:就是在数据前后分别添加首部的帧开始符和尾部的帧结束符,这样就构成了帧。
2)透明传输:用字节填充法,在每个标题开始前,传输结束前均填充ESC(在非帧边界的控制字符插入转义字符),解决透明传输的问题。
3)差错检测:传输过程中可能会出现差错(比特差错),为保证可靠性,在数据链路层广泛使用了循环冗余检验CRC的检错技术
3.网络层:(路由器,IP协议)
目的:从数据链路层发送来的数据多个节点发送到目的地,为了知道目的结点是哪个,最佳路径是什么,选择合适的网间路由和交换结点。
数据包是包含在帧中,包中封装了网络层包头,如源站点、目的站点信息等,如果你还在讨论一个ip地址,那么你是在这层的问题。
流程:将网络地址翻译成物理地址,决定了如何将数据从起始地发送到目的地
4.传输层:(OSI模型中最重要的一层,TCP协议,UDP协议)
ack数据(acknowledgement 确认):ACK为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。表示响应。
syn数据(synchronous建立联机):SYN表示建立连接
FIN(finish结束):关闭连接
PSH(push传送)表示有 DATA数据传输
RST(reset重置)表示连接重置
Sequence number(顺序号码)
Acknowledge number(确认号码)
*ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应
建立连接时的三次握手即表示TCP连接时,客户端(以下用A表示)和服务端(以下用B表示)之间建立联系的三个过程:
First--> A向B发起连接请求,此时:A---->B;
Second--> B收到A的发送信号,并且向A发送确认消息,此时:B---->A; Third--> A收到B的确认信号,并向B发送确认信号,此时:A---->B。
分析:通过第一次握手,B知道A发起了连接请求;
第二次握手,A知道B此时能发送数据;
第三次握手,B知道A能够接收数据。至此,A与B的连接建立完成。
原理分析
第一次握手:建立连接时,客户端发送syn包(syn=j)至服务器,并进入SYN_SENT状态,等待服务器确认。
SYN(Synchronize Sequence Numbers):同步序列编号。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器·的SYN+ACK包,向服务器发送确认包ACK(ack+1),此确认包发送完毕后,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
TCP断开连接时的四次挥手
<1> A向B发起请求,表示A没有数据要发送了:A——>B;
<2> B向A发送信号,确认A的断开请求:B——>A;
<3> B向A发送信号,请求断开连接,表示B没有数据要发送了:B——>A; <4> A向B发送确认信号,同意断开:A——>B。
原理分析
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。 |
第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。
传输层需要两种不同的运输协议,即面向连接的TCP和无连接的UDP。TCP数据单元为段 而UDP中数据单元为数据报。传输层将数据切割之后,对每一个数据片安排一个序列号。以便数据到达接收方的传输层时,能以正确的顺序重组。
UDP:
目的:
UDP的首部长度是固定的,共64bit,即8个字节。 提供了差错检测得功能,即用于确定当UDP报文段从源到达目的时,其中的比特是否发生了改变。
UDP是无连接 尽最大努力交付 面向报文 首部开销小 8字节 比TCP的20个字节小
5.会话层(这一层,封装过后的信息已经可以发送到接收方)
会话单位的控制层,其主要功能是按照在应用进程之间约定的原则,按照正确的顺序收、发数据,进行各种形态的对话。建立一个自动收发包,自动寻址的功能。
6.表示层
数据表示形式的控制层,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。解决不同系统之间通信的语法问题(比如windows和linux)
7.应用层:(HTTP协议)
目的:这一层上发送方已经知道自己发送的是什么,以及转换成字节长度有多长,此时需要让接收方知道相关信息。
流程:规定发送方和接收方必须使用固定长度的消息头。消息头必须使用某种固定的组成。而且消息头里必须记录消息体的长度等一系列信息。方便接收方能够解析发送方发送的数据。
二.几个端口
80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。而8080,一般用与webcahe,完全不一样的两个,比如linux服务器里apache默认跑80端口,而apache-tomcat默认跑8080端口,其实端口没有实际意义只是一个接口,主要是看服务的监听端口。
网友评论