1.网络模型
首先说说网络分层,有三种模型
1、OSI七层模型分为: 应用层,表示层,会话层,传输层,数据链接层,网络层,物理层,(自上而下的排序的哈),OSI就理解为一个网络的分层模型
2、因特尔的五层模型,比OSI少了表示层,和会话层。
3、TCP(传输控制协议)/IP(因特网协议)模型,TCP和Ip都是两个协议,只是因为这在网络协议中比较重要,因此以此命名的。 该模型就是实现两台电脑互联的遵守的协议。这协议分为三层:传输层,网络层,网络接口层(排序是自上而下的,物理层是最低层)
2.udp,tcp
TCP是tcp/ip体系中运输层,面向连接的可靠传输协议。
UDP也是运输层的协议,只不过是不可靠的传输。
UDP:(如发短信)
UDP就像是手机发短信一样,不需要对方和你事先是否连接,不管对方目前在干什么,状态是怎样的,都不关心。直接就填好短信(数据)接收的电话号码(ip地址),然后发送,收没收到也不管,这样的好处就是传送很快,不用双方处于连接状态,就可以发送。(QQ发消息就是如此)但是,缺点也明显,就是不可靠,容易丢失数据,有时候你的qq会接收不到对方发送过来的消息。
TCP(打电话)
TCP就像是打电话一样,需要事先拨号,当拨号成功后,电话双方就建立起连接了,连接成功后才可以发送数据,就是给两个电脑之间事先建立起连接通道,然后再传输数据(QQ视屏就是如此,需要对方确认连接)如果传输数据过程中数据丢失的话,要重新发送传输,直到对方接收完为止。这样可靠性就强,但是传输效率就不高。
3. TCP3次握手
- Tcp3次握手,4次挥手?
TCP的报文格式,报文头,报文协议体。
协议头的重要字段:
SYN 同步序号(常用于端口扫描),SYN=1,ACK=0表示这是连接请求报文,对方同意,对方的SYN=1,ACK=1.SYn=1表示这是一个连接请求或者接受报文。Seq 报文的序号。
ACK确认号,建立连接之后,每次发送的报文都是ACK=1
FIN释放连接。 FIN=1表示数据发送完毕,释放连接。
ack number 用于确认发送给自己的报文。
TCP三次握手:
第一次握手: 客户端SYN=1.ACK=1,seq=随机数,发送给服务端。请求建立连接。
第二次握手:
服务端接收报文段,并使ack number=seq+1,ACK=1,SYN=1,seq=随机数。发送给客户端。
第三次握手:
客户端接收报文,ack=1,ack number=seq+1,seq=随机数。发送给服务端。
4.TCP4次挥手
第一次分手:
主机1(服务端或者客户端)发送FIN报文段,进入等待状态,表示无数据可发。
第二次分手:
主机2收到主机1的FIN报文段,向主机1回一个ACK报文段,当然ack number=seq+1。主机2告诉主机1同意关闭请求。
第三次分手:
主机2向主机1发送FIN报文段,请求关闭连接,主机2进入LAST——ACK状态。
第四次分手:
主机1收到主机2的FIN报文段,发送ACK报文段,进入TIME——wait状态,主机2收到主机1的ACK之后就关闭连接。主机1 等2MSL后,没收到回复表示就彻底断开。
5.为什么3次握手建立连接
防止在网络中滞留的请求连接报文突然发送给服务器,若不采用“3次握手”,那么服务器就会确认建立了连接,但实际上并不是客户端想请求建立连接,这样就造成资源浪费。