TCP/IP四层模型

来源:互联网 发布:linux mount命令详解 编辑:程序博客网 时间:2024/06/10 00:54

TCP/IP四层模型

应用层:给用户提供发送数据的接口,如文件传输协议(FTP)http协议,https等  例:(FTP头)


传输层: TCP(三次握手协议,相当于打电话), UDP(只发送一次,相当于发短信,qq用的协议). 例:(FTP头,TCP头)

网际互联层:IP协议(源IP和目标IP),ICMP协议(ping 两台机器是否能通话) 例:(FTP头,TCP头,IP头)

网络接口层:包括数据链路层 物理层,地址协议ARP协议(将ip地址转换成mac物理地址)工作在此层  例:(FTP头,TCP头,IP头,以太帧头)


 TCP和UDP的区别

1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性; 而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。


什么是TCP连接的三次握手

SYN_SENT: 表示请求连接当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED.

SYN: 是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
  
SYN_RECV: 是服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入ESTABLISHED状态。

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;


第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;


第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。


握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据(才能http协议包装数据)。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

 断开连接时:服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”


传输过程:从上往下倒从下往上
局域网内: 数据的传输是依靠 mac物理地址传输数据  
公网内: 数据的传输是依靠IP地址传输数据