• TCP/IP协议学习(一)


    一。网络模型

      OSI七层模型:自上至下依次是 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

        应用层:具体的应用协议如HTTP、SMTP、FTP、TELNET、DNS等

        表示层:针对数据格式,使应用程序不用关心各个主机中的数据格式

        会话层:管理会话,针对通信时机,确定何时建立或断开连接

        传输层:针对数据的传输和具体的建立或断开连接等,TCP、UDP协议

        网络层:寻址和路由,实际上的数据传输任务由网络层完成(发送数据包),单位为包。路由器属于这一层

        数据链路层:物理层上互连的节点之间通信,如同一链路上的主机数据传输服务,单位为帧。交换机在这一层

        物理层:关注怎样在传输媒体上传输数据比特流,单位为比特。集线器在这一层

      TCP/IP模型:自上至下依次是 应用层,传输层,网络层,链路层(网络接口层)

      五层协议模型:自上而下依次是 应用层,传输层,网络层,数据链路层,物理层

    二。TCP的三次握手

      基于TCP的通信中,在客户端和服务端进行通信之前,需要进行三次握手以建立连接。

      三次握手流程

      (1)客户端向服务端发送连接请求报文段(SYN包):SYN=1,seq=x

      (2)服务端收到消息后向客户端发送确认应答和建立连接报文(SYN+ACK):SYN=1,ACK=1,seq=y,ack=x+1

      (3)客户端收到消息后再向服务端发送确认应答报文段(ACK包):ACK=1,seq=x+1,ack=y+1

      三次握手的作用

      (1)确定客户端和接收端双方都已具有接收消息和发送消息的功能。

      (2)防止已过期的连接请求报文段(如因阻塞而未及时到达)突然发送到服务器,从而造成错误。

      这也是为什么不是两次握手的主要原因。

      ACK:1个字节,ACK=1时表示有效

      ack:确认号,4个字节,表示希望收到的下一个报文段中第一个字节的编号

      SYN:同步包,SYN=1,ACK=1时表示同意连接;SYN=1,ACK=0时表示连接请求

      seq:序列号,用来标记数据段顺序,报文段中第一个字节的编号

    三。TCP的四次挥手

      基于TCP的通信中,在客户端和服务端结束通信之前,需要通过四次挥手来断开连接。

      四次挥手流程

      (1)客户端向服务端发送请求断开连接(FIN包):FIN=1,seq=u

      (2)服务端收到请求后回复确认应答(ACK包):ACK=1,seq=v,ack=u+1

      (3)服务端向客户端发送请求以断开连接(FIN包):FIN=1,seq=w

      (4)客户端收到请求后回复确认应答(ACK包):ACK=1,seq=u+1,ack=w+1

      四次挥手的作用

      因为一方收到另一方的断开连接消息(FIN报文)后,必须先回复一个确认消息(ACK报文),然后才能发送FIN报文

      在收到FIN报文时,服务端的数据可能尚未完全发送完毕,并不需要立即关闭连接。因此,FIN报文和ACK报文通常分开发送?

      FIN:用来释放连接诶,FIN=1表示希望断开连接

    四。TCP与UDP的区别

      TCP:面向连接的、可靠的、数据流协议(面向字节流,将数据看作一串无结构的字节流),

         且TCP协议拥有顺序控制、超时重传、拥塞控制等机制;

         只支持一对一通信

      UDP:无连接的、不可靠的(UDP只尽最大能力完成交付)、数据报协议(面向报文)

         支持一对一,一对多,多对多通信

  • 相关阅读:
    MyISAM和InnoDB的区别
    MySQL——索引与优化
    jquery选择器及效率问题
    Mac 可设置环境变量的位置、查看和添加PATH环境变量
    javascript默认中文(汉字/标点)长度均为1的解决
    苹果下抓屏截屏方法 包括全屏、选择区域、窗口抓屏等
    java实现window phone推送通知
    设计模式总结
    NHibernate 帮助类(单例实际运用)
    访问者模式
  • 原文地址:https://www.cnblogs.com/xiang9286/p/10684365.html
Copyright © 2020-2023  润新知