• 运输层TCP/UDP


    UDP:用户数据报协议

    客户不与服务器建立连接,它只管用函数sendto给服务器发送数据报,此函数要求目的地址(服务器)作为其参数。类似的,服务器不从客户接受连接,它只管调用函数recvfrom,等待来自其客户的数据到达。与数据报一起,recvfrom返回客户的协议地址,所以服务器可以发送响应给正确的客户。

    TCP:传输控制协议

    首先,TCP提供客户与服务器的连接;

    其次,TCP提供可靠性;

    第三,TCP通过给所发送数据的每一个字节关联一个序列号进行排序;

    第四,TCP提供流量控制;TCP总是告诉对方它能够接受多少字节的数据,这称为通告窗口。

    最后,TCP连接时全双工的;

     

    说明:1.创建TCP套接口

          2.捆绑服务器的众所周知端口

          3.把套接口变换成监听套接口

          4.接受客户连接,发送应答,服务器进程在调用accept函数后处于睡眠状态,它等待客户的连接和内核对它的接受。TCP连接使用三路握手来建立,当握手完毕,accept函数返回,其返回值是一个已连接描述字的新描述字。

    建立一个TCP连接时,会发生下述情形:

    1、服务器端必须做好准备接受外来的连接。这通常通过 socket(), bind(), listen() 三个函数来完成的。我们称之为 被动打开(passive open).

    2、客户端通过调用connect发起主动打开(active open)。这导致客户端TCP发送SYN同步分节。它告诉服务器客户端在(待建立的)连接中发送的数据的初始化序列号。通用SYN分节不携带数据,

    3、服务器必须确认(ACK) 客户端的SYN,同时自己也得发送一个SYN分节,它含有服务器将在统一连接中发送的数据的初始化序号。服务器在单个分节中发送SYN和对客户端SYN的ACK确认。

    4、客户端必须确认服务器的SYN。

    TCP连接的终止:

    1、某个应用程序首先调用close,主动关闭(active close) 该端的TCP于是发送一个FIN分节,表示数据发送完毕。

    2、接收到这个FIN的对端执行被动关闭(passive close)。这个FIN是TCP确认。它的接收也作为一个文件结束符(end of file) 传递给接收端的应用程序(放在排队等候应用进程接收的任何其他数据之后),因为FIN的接收意味着接收端应用程序在相应连接上再无额外数据可以接收。

    3、一段时间以后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。

    4、接收这个最终FINd额原发送端TCP(即执行主动关闭的一端)确认这个FIN。

  • 相关阅读:
    怎么写好组件
    你所不知道的 URL
    响应式Web设计 – 布局
    ajax请求总是不成功?浏览器的同源策略和跨域问题详解
    滑屏 H5 开发实践九问
    UVALive
    [CQOI2018] 破解D-H协议
    [CQOI2018] 解锁屏幕
    HDU
    CodeChef
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3610806.html
Copyright © 2020-2023  润新知