zoukankan      html  css  js  c++  java
  • TCP 建立的3次握手, 和关闭的4次握手

    TCP/IP 寻址

    TCP/IP 使用 32 个比特或者 4 个 0 到 255 之间的数字来为计算机编址。

    TCP/IP 连接

    用S(service) 代表服务端, C(client) 代表客户端

    建立连接

    建立连接, 需要3此握手
    首先, C --> S, 发送SYN请求, 告诉S我要跟你建立连接了,
    接着, S --> C, 回应SYN+ACK, 我接受到你的请求, 可以建立连接,
    最后, C --> S, C 会再次发送ACK请求回应S 确认, 我们建立连接.
    
    为什么要3次握手:
    当S 收到C 的SYN连接请求后, 可以直接发送SYN+ACK报文, 其中ACK报文是用来应答的, SYN报文用来同步的, 双方都在同意的情况下建立连接, 保证了连接的安全性

    关闭连接

    关闭连接, 需要4此握手
    首先, C --> S, 发送一条FIN, 告诉S 可以关闭了,
    然后, S --> C, S 接收会回应已提交ACK. 告诉C 我还没准备好关闭呢, 等一会, 
    接着, S --> C, 当S 准备好了, 发送一条FIN, 我已经准备好关闭了,
    最后, C --> S, C 接收到会发送一条ACK确认信息, 保证大家一起关闭. TCP连接也这样关闭了.
    (考虑网络不稳定的情况, 还做了一个操作, 就是等待超过2MSL之后才能进入Closed状态, 万一ACK有丢失, 就会一直处在TIME_WAIT状态中, 所以才需要等待一个报文段最大时间之后进入Closed状态)
    
    为什么要4次握手呢:
    当S 端收到C 端的报文, S 端可能没处理完事情, 所以不会立即关闭Socket, 只能先回复一条ACK, 告诉C 端我收到你的请求, 当S 的事都做完了, 马上会发送FIN报文, 告诉C 我们可以关闭了, TCP也就关闭了
    SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。
    ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
    FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

    域名

    将12个数字使用一个TCP/IP 地址表示被称为域名

    当你键入一个像 http://www.w3school.com.cn 这样的域名,域名会被一种 DNS 程序翻译为数字

    协议

    TCP/IP 是不同的通信协议的大集合。

    协议族

    TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大的集合。

    TCP - 传输控制协议

    TCP 用于从应用程序到网络的数据传输控制。

    TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

    IP - 网际协议

    IP 负责计算机之间的通信。

    IP 负责在因特网上发送和接收数据包。

    HTTP - 超文本传输协议

    HTTP 负责 web 服务器与 web 浏览器之间的通信。

    HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。

    HTTPS - 安全的 HTTP

    HTTPS 负责在 web 服务器和 web 浏览器之间的安全通信。

    作为有代表性的应用,HTTPS 会用于处理信用卡交易和其他的敏感数据。

    SSL - 安全套接字层

    SSL 协议用于为安全数据传输加密数据。

    SMTP - 简易邮件传输协议

    SMTP 用于电子邮件的传输。

    MIME - 多用途因特网邮件扩展

    MIME 协议使 SMTP 有能力通过 TCP/IP 网络传输多媒体文件,包括声音、视频和二进制数据。

    IMAP - 因特网消息访问协议

    IMAP 用于存储和取回电子邮件。

    POP - 邮局协议

    POP 用于从电子邮件服务器向个人电脑下载电子邮件。

    FTP - 文件传输协议

    FTP 负责计算机之间的文件传输。

    NTP - 网络时间协议

    NTP 用于在计算机之间同步时间(钟)。

    DHCP - 动态主机配置协议

    DHCP 用于向网络中的计算机分配动态 IP 地址。

    SNMP - 简单网络管理协议

    SNMP 用于计算机网络的管理。

    LDAP - 轻量级的目录访问协议

    LDAP 用于从因特网搜集关于用户和电子邮件地址的信息。

    ICMP - 因特网消息控制协议

    ICMP 负责网络中的错误处理。

    ARP - Address Resolution Protocol

    ARP - 用于通过 IP 来查找基于 IP 地址的计算机网卡的硬件地址。

    RARP - Reverse Address Resolution Protocol

    RARP 用于通过 IP 查找基于硬件地址的计算机网卡的 IP 地址。

    BOOTP - Boot Protocol

    BOOTP 用于从网络启动计算机。

    PPTP - 点对点隧道协议

    PPTP 用于私人网络之间的连接(隧道)。

  • 相关阅读:
    直播源列表
    MySQL为什么"错误"选择代价更大的索引
    C#中ConfigureAwait的理解(作者Stephen)
    理解C#中的 async await
    C#中Task.Delay() 和 Thread.Sleep() 区别
    扁平结构数据变成嵌套结构数据(树状结构)
    判断两个数组相同 两个对象相同 js
    嵌套结构数据(树状结构)变成扁平结构不带子元素(children)
    嵌套结构数据(树状结构)变成扁平结构带有子元素(children)
    2022.1.11学习日志
  • 原文地址:https://www.cnblogs.com/MrTao/p/5795147.html
Copyright © 2011-2022 走看看