美文网首页
了解TCP/IP协议

了解TCP/IP协议

作者: ___________枫林晚 | 来源:发表于2016-09-05 00:33 被阅读0次

     OSI (Open System Interconnection 开放式系统互联) 参考模型:

    具体可参考:OSI参考模型

            它是由ISO国际标准化组织定义的一个标准,但只作为参考模型,所谓参考模型定义就是:供设备生产厂商或者软件厂商参考用的网络通信模型,而不是一个强制标准。TCP/IP 脱胎于OSI模型,所以要了解TCP/IP之前要先学习OSI。

    OSI模型将网络通信的工作分为7层:也可以理解为7个步骤

    OSI模型

    1. 应用层:通常最具有代表性的协议:http、ftp、smtp、OICQ(QQ)等

    2. 表示层:主要对数据进行处理,包括格式转化、加密、解密、压缩

    3. 会话层:管理会话

    4. 传输层:分配端口号port,建立连接 (TCP UDP)同时控制传输过程和资源开销

    5. 网络层:提供路由选择(路由器),分配IP地址并寻址

    6. 数据链路层:提供容错处理,差错控制,另一方面会将网络地址转化为mac地址,在物理层面进行寻址

    7. 物理层:传输介质(网线、光纤),转化为二进制流通过光信号或电信号传输

    对于我来说,并不需要深入理解每一层的机制,因为大部分的工作只停留在前4层。

    TCP/IP 将OSI模型改写为4层

    OSI TCP/IP关系

    TCP协议(Transmission Control Protocol):传输控制协议

    为了更好的理解TCP协议,可参考《使用wireshark分析TCP/IP协议中TCP包头的格式

    1. 建立连接(3次握手)

        1>. 客户端向服务端发送SYN包,并进入SYN_SEND状态,等待服务器确认

        2>. 服务器接收到SYN包,必须确认接收状态,发送ACK包响应,同时发送自己的SYN包,并                                 

              进入SYN_RECV状态

         3>. 客户端接收到SYN+ACK包,进入ESTABLISHED状态,并向服务器发送SYN包确认ACK,服务器接收到ACK包,并进入ESTABLISHED状态

    当客户端和服务端都进入ESTABLISHED状态,客户端和服务端就可以开始双向传递数据了。

    具体流程如图:

    3次握手

    2. 关闭连接

        1>. 主动关闭方向被动关闭端发送FIN包,并进入FIN_WAIT1状态

         2>. 被动关闭端接收到FIN包后,向主动关闭方发送ACK包,并进入CLOSE_WAIT;主动关闭    方接收到ACK包,向被动关闭方发送ACK包,并进入FIN_WAIT2状态。

          3>. 被动关闭方发送FIN包,并进入LAST_ACK状态

          4>. 主动关闭方接收到FIN后,向被动关闭方发送ACK包,此时主动关闭方进入TIME_WAIT状态,在2MSL(生命周期)时间后关闭连接;被动关闭方在接收到ACK后,关闭连接


    3. 保证可靠  :也是TCP最重要的特点


    UDP协议(User Diagram Protocol)用户数据报协议

    UDP和TCP的最主要的区别在于可靠性的保证上面,主要体现在没有3次握手的过程。

    UDP非常简单

    特点:1.  可靠性差 ,它不会去关注数据报是否传输成功,是否丢失

              2. 性能好

    TCP/UDP报文格式

    TCP和UDP选择问题

    因为TCP基本可以使用所有场景,所用用TCP不会错,但是有些场景需要考虑性能和不需要可靠性保证,所以不需要所有数据的传输可靠,所以选择UDP,比如,视频聊天等

    相关文章

      网友评论

          本文标题:了解TCP/IP协议

          本文链接:https://www.haomeiwen.com/subject/ooblettx.html