• 计算机网络


    目录

    1.建立TCP服务器的系统调用

    2.UDP如何实现可靠传输

    3.TCP和UDP的区别

    4.TCP与UDP相关的协议与端口

    5.浏览器输入URL后执行过程

    6.TCP3次握手

    7. 为什么3次而不能是2次或者4次握手

    8.TCP4次挥手

    9.为什么4次挥手而不是3次或者5次

    10.TIME_WAIT等待2MSL的意义

    11.拥塞控制和流量控制

    12.TCP拥塞控制


    1.建立TCP服务器的系统调用

    1. socket()        创建套接字
    2. bind()            绑定
    3. connect()        连接
    4. listen()            监听
    5. accept()          接受连接
    6. recv(),read(),recvfrom()          接收
    7. send(),write(),sendto()           发送
    8. close(),shundown()                 关闭

    close得等socket计数器为0才结束,shutdown可以直接结束

    2.UDP如何实现可靠传输

    因为UDP是无连接的协议,要实现可靠传输,就要仿照TCP,实现seq/ack机制,重传机制,窗口确认机制。窗口确认机制根据网络拥堵状态确定发送数据量。

    3.TCP和UDP的区别

    1)TCP是面向有连接的协议,传输可靠,收发数据都会有对应的响应,UDP面向无连接的协议

    2)TCP提供流量控制和拥塞控制,UDP没有

    3)TCP速度比UDP慢

    4)TCP数据没有边界,会出现粘包情况,UDP不会

    4.TCP与UDP相关的协议与端口

    TCP族的协议:HTTP,HTTPS,FTP,SMTP

    UDP族的协议:DCHP,DNS

     TCP,UDP相关协议和端口号_从零开始学习的ZHL的博客-CSDN博客

    5.浏览器输入URL后执行过程

    1)将域名通过DNS解析为主机IP

    2)客户端与服务器端通过TCP3次握手建立连接

    3)接着客户端向服务器端发送HTTP请求

    4)服务器端接受HTTP请求,并做出响应

    5)客户端接收HTTP响应,并将结果渲染给用户

    6.TCP3次握手

    1)客户端给服务端发送SYN=1的连接请求,并发送序列号seq=x

    2)服务器端接收并返回给客户端SYN=1,ACK=1,ack=x+1,并返回一个seq=y的序列

    3)客户端接收到后,给服务器端返回ACK=1,seq=x+1,ack=y+1

    7. 为什么3次而不能是2次或者4次握手

    2次太少,不能确定最后客户端是否具有数据接受能力;4次太多,客户端和服务器端第二次握手,同时体现了服务器具有数据接收和发送功能。

    8.TCP4次挥手

    当客户端和服务器端需要断开连接时,会进行4次挥手

    1)客户端给服务器端发送FIN,告诉服务器客户端以及发送完数据了,服务器没发完可以继续发,但需要告诉客户端接收到到客户端发完数据的消息,然后客户端进入FIN_WAIT_1

    2)服务器端接收到FIN报文后,告诉客户端,接收到了,并让客户端等待服务器发完,此时客户端处于FIN_WAIT_2,服务器端处于CLOSE_WAIT

    3)当服务端发完所有数据,会给客户端发送FIN,并告诉其自己发完了,准备关闭连接,此时服务端进入LAST_ACK状态,等客户端最后的ACK信息

    4)客户端接收到FIN后,会给服务器端发送ACK信息,然后会进入TIME_WAIT状态,超过2MSL后自动结束

    9.为什么4次挥手而不是3次或者5次

    因为通信时是双工的,每2次挥手,保证一方进入关闭状态,3次不能达到目的,5次太多。

    10.TIME_WAIT等待2MSL的意义

    万一客户端发送的ACK服务器端没收到,服务器端会重新进行第三次挥手,发送FIN报文,直到结束

    11.拥塞控制和流量控制

    拥塞控制指防止一次性注入太多数据进入网络,导致网络拥塞;

    流量控制指防止发送方依次发送过多数据给接收方,接收方缓存放不下;

    12.TCP拥塞控制

    拥塞控制有4种算法:慢启动、拥塞避免、超时重连、快速恢复

    发送方维持一个拥塞窗口cwnd,拥塞窗口的大小取决于网络的拥程度,发送方让自己的发送窗口小于拥塞窗口和接收窗口的较小值。

    1)慢启动:当主机开始发送数据时,先以较小的拥塞窗口发送,然后每次翻倍,1、2、4、8、16~,同时会有一个慢启动阈值,当阈值大于拥塞窗口,就会改为拥塞避免算法

    2)拥塞避免:拥塞避免算法让cwnd窗口缓慢增加,每次加1

    3)快速重传:当连续收到3次相同的ack时,表示数据丢失,此时重发,拥塞窗口=慢启动阈值+3

    4)快速恢复:当超过设定时间没有接收到ack,则表示网络拥塞,慢启动阈值变为原来一半,cwnd=1,进入慢启动阶段

     

  • 相关阅读:
    OP-TEE中的线程管理(四)
    Java项目:基于jsp+sevlet+mysql日记系统
    HTML5期末作业:明星网站设计与实现——明星薛之谦介绍网页设计7个页面HTML+CSS+JavaScript
    Leetcode-142 环形链表 II
    2024年天津农学院专升本增加水文与水资源专业更名报考范围的通知
    点成分享 | 选择点成BEOnChip芯片的六大理由
    uboot移植之环境变量bootargs
    钉钉开发文档
    最小系统板 STM32入门,呼吸灯实现(STM32F103C6T6)
    栈与队列介绍
  • 原文地址:https://blog.csdn.net/ljjjjjjjjjjj/article/details/127587125