zoukankan      html  css  js  c++  java
  • TCP协议

    精简至 https://www.oschina.net/question/565065_86328

    四层模型 
    TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。 

    网络接口层 
    模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。 

    互联层 
    互联协议将数据包封装成internet数据报,并运行必要的路由算法。 
    这里有四个互联协议: 
    网际协议IP:负责在主机和网络之间寻址和路由数据包。 

    IP是一个无连接的协议,主要就是负责在主机间寻址并为数据包设定路由

    IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的:网络号和主机号。其中网络号标识一个物理的网络,同一个网络上所有主机需要同一个网络号,该号在互联网中是唯一的;而主机号确定网络中的一个工作端、服务器、路由器其它TCP/IP主机。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。 


    地址解析协议ARP:获得同一物理网络中的硬件主机地址。 
    网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。 
    互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。 

    传输层 
    传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。 
    两个传输协议: 
    传输控制协议TCP:为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。 

    TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。 
    通过每个TCP传输的字段指定顺序号,以获得可靠性。如果一个分段被分解成几个小段,接收主机会知道是否所有小段都已收到。通过发送应答,用以确认别的主机收到了数据。对于发送的每一个小段,接收主机必须在一个指定的时间返回一个确认。如果发送者未收到确认,数据会被重新发送;如果收到的数据包损坏,接收主机会舍弃它,因为确认未被发送,发送者会重新发送分段。 

    端口 
    SOCKETS实用程序使用一个协议端口号来标明自己应用的唯一性。端口可以使用0到65536之间的任何数字。在服务请求时,操作系统动态地为客户端的应用程序分配端口号。 

    TCP的三次握手 
    TCP对话通过三次握手来初始化。三次握手的目的是使数据段的发送和接收同步;告诉其它主机其一次可接收的数据量,并建立虚连接。 
    我们来看看这三次握手的简单过程: 
    (1)初始化主机通过一个同步标志置位的数据段发出会话请求。 
    (2)接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。 
    (3)请求主机再回送一个数据段,并带有确认顺序号和确认号。 


    用户数据报协议UDP:提供了无连接通信,且不对传送包进行可靠的保证。适合于一次传输小量数据,可靠性则由应用层来负责。 

    用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。 



    应用层 
    应用程序通过这一层访问网络。 HTTP  FTP

  • 相关阅读:
    Python中获取字典中最值对应的键
    Python中if __name__ == "__main__": 的作用
    Python中将打印输出导向日志文件
    python函数参数前面单星号(*)和双星号(**)的区别
    Python中用datetime包进行对时间的一些操作
    python中scipy.misc.logsumexp函数的运用场景
    Python中在脚本中引用其他文件函数的方法
    KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布
    R如何检验类别变量(nominal variable)与其他变量之间的相关性
    机器学习-贝叶斯算法
  • 原文地址:https://www.cnblogs.com/season-xie/p/6506325.html
Copyright © 2011-2022 走看看