清理大脑缓存
清理情绪缓存
清理身体缓存
行动力决定你未来的方向

目录:

  • 水仙花数
  • 九九乘法表
  • 传输控制协议TCP
    • TCP的主要特点:

      • 1. 面向连接的运输层协议
      • 2. TCP通信概述
      • 3. TCP实现原理
      • 4. 三次握手和四次挥手
      • 5. 面向字节流
  • 用户数据报协议UDP
    • UDP特点
  • TCP和UDP间的关系
    • 面试题

1- 计算 100-999 的水仙花数,没有要求语言(简答题)?

答:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

科普小知识:

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
其他位数的自幂数名字:
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数。

for i in range(1, 10):for j in range(0, 9):for y in range(0, 9):s1 = i * 100 + j * 10 + ys2 = i ** 3 + j ** 3 + y ** 3if s1 == s2:print(f'{s2}是水仙花数')

2、打印 9*9 乘法表

# 九九乘法表
for i in range(1,10):for j in range(1,i+1):print(f'{j}*{i}={i*j}\t',end='')print('\n')写入文件的格式同理:
# 九九乘法表
# with open('./九九乘法表.txt','w+') as file1:
#     for i in range(1,10):
#         for j in range(1,i+1):
#             file1.write(f'{j}*{i}={i*j}\t')
#
#         file1.write('\n')

3- TCP 连接两台设备间通过什么连接,TCP 报文头部相关的,结构,长度?

答:

1.1 TCP通信概述

TCP协议用来控制两个网络设备之间的点对点通信,两端设备按作用分为客户端和服务端。服务端为客户端提供服务,通常等待客户端的请求信息,有客户端请求到达之后,及时提供服务和返回响应消息;客户端向服务端主动发出请求,并接受响应消息。

首先启动服务端程序,并开始等待网络中的客户请求,然后客户端主动向服务端发出连接请求,服务端接收到客户端的连接请求后,并和客户端之间建立一个稳定的TCP/IP通信连接。
    现在客户端将向服务端主动发出请求,服务端接收客户端消息,并及时返回响应消息。这是通过IO流(字节流)实现的。
    通信完成后,由客户端主动关闭和服务端之间的连接;如果客户端未主动关闭和服务端之间的连接,服务端在等待指定的时间后将关闭这个连接。

1.2 TCP的特点

TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个有顺序且无差错的数据流。
    因为TCP通信两端的行为是不同的,所以在客户端使用socket类实现通信,而服务器使用ServerSocket实现通信。
    网络通信不是必须有两个物理主机,而是需要有两个不同的socket就可以通信,例如,在同一主机上IP地址是相同的,但是使用不同的端口创建不同的socket,这样的两个socket之间也是可以实现TCP/IP的通信。

1.3 TCP通信的实现原理

无论一个TCP通信程序的功能多么齐全,程序多么复杂,其基本结构都是一样的,都包括以下四个基本步骤:

①、在服务端指定一个端口号来创建serverSocket,并使用accept方法进行侦听,这将阻塞服务器线程,等待用户请求。
②、在客户端指定服务的主机IP和端口号来创建socket,并连接服务端serverSocket,此时服务端accept方法被唤醒,同时返回一个和客户端通信的socket。
③、在客户端和服务端分别使用socket来获取网络通信输入/输出流,并按照一定的通信协议对socket进行读/写操作。
④、通信完成后,在客户端和服务端中分别关闭socket。

三次握手:

四次挥手:

4- UDP协议的主要特点:

答:用户数据报协议,面向无连接,可以单播,多播,广播, 面向数据报,不可靠

5-  TCP、UDP间的关系

答:

5.1 TCP 和 UDP -> 传输层的协议。

UDP:用户数据报协议,面向无连接,可以单播,多播,广播, 面向数据报,不可靠

TCP:传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输

面试题:

(1)为什么是三次握手,可不可以是两次握手,为什么?

答:如果是两次握手,那么如果出现这种情况:发送端发送请求连接报文,但是由于在网络中出现了滞留并没有按时到达接收端,等到一段时间发送端再次发送连接请求报文,接收端接收之后并发送确认连接。这样两次握手建立连接1。但是之前在网络中滞留的连接请求报文并没有丢失,于是发送给接收端,接收端误以为建立连接,于是就回复确认建立连接,所以此时又建立了连接2,但是发送端并不会给连接2发送数据,所以接收端一直处于等待,就会浪费接受端许多资源。

三次握手也可以是四次握手:接收端在回复确认建立连接报文的时候,将其分成两个报文段,一个是回复对发送端的连接确认,一个是发送自己的同步报文段。

(2) 挥手为什么需要四次?

答:因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。

(3)四次挥手释放连接时,等待2MSL的意义?

MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

两个理由:

  • 保证客户端发送的最后一个ACK报文段能够到达服务端。

客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。

这个ACK报文段有可能丢失,使得处于LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认,服务端超时重传FIN+ACK报文段,而客户端能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重新启动2MSL计时器,最后客户端和服务端都进入到CLOSED状态,若客户端在TIME-WAIT状态不等待一段时间,而是发送完ACK报文段后立即释放连接,则无法收到服务端重传的FIN+ACK报文段,所以不会再发送一次确认报文段,则服务端无法正常进入到CLOSED状态。

  • 防止“已失效的连接请求报文段”出现在本连接中。

客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。

(4)为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?

理论上,四个报文都发送完毕,就可以直接进入CLOSE状态了,但是可能网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

(5)同一个端口可不可以被一个 TCP 和一个 UDP 的应用程序同时使用?

可以。原因是端口的唯一性标识是:端口号+协议名称。所以TCP和UDP的端口完全没有任何关系,协议内部端口号唯一。

追问:程序在连接到端口时,怎么知道此时从该端口进来的数据是tcp的还是udp的呢?

操作系统根据接收的IP数据包的首部内的8位协议来判断这是什么报文,从而直接交给相关的内核进程或者协议栈处理。

追问:一个端口是否可以绑定多个端口号?

可以。一个进程可以打开多个文件描述符,每个文件描述符对应一个端口号,所以一个进程可以绑定多个端口号。Linux会给每个socket分配一个唯一的文件描述符,通过这个文件描述符来区分对应的套接字。

追问:一个端口号是否可以被多个进程绑定?

不可以。但是在父子进程中可以实现多进程绑定一个端口号,因为子进程具有父进程的文件描述符副本,可以处理绑定到同样的端口上的连接

追问:一个端口可以同时连接多个TCP和多个UDP吗?

一个端口可以建立多个TCP连接,所谓的同一个端口是指服务器端的ip和port不变,但是只要客户端的ip和port不同就可以。一个端口同一时间只能绑定一个socket。UDP是面向无连接的,所以不存在多个UDP连接,只是服务端接收UDP数据需要绑定一个端口,一个socket只能绑定一个端口而已。

咻~

晚安前学习——第1天相关推荐

  1. 晚安前学习——第2天

    清理大脑缓存 清理情绪缓存 清理身体缓存 行动力决定你未来的方向 没有逻辑性的学习,想到什么就记录一下吧, 总之方向就是最近面试中会问到的知识点. 1- 判断是否为回文数:# list1 = '上海自 ...

  2. 晚上睡觉前除了晚安,还能说什么?

    文案链接 1.晚安,换个世界想你,一会儿见. 2.不睡觉的星星,代替我吻一吻你的眼睛. 3.晚安吻只能亲额头,不然小朋友容易蛀牙. 4.有没有兴趣做一对江洋大盗,晚上咱俩一起抢被子. 5.晚睡的姑娘都 ...

  3. 节假日api_iOS能跳过节假日的晚安闹钟捷径

    捷径作为一个非常便利的工具,作为一个不想学习的人,自习时间就会无聊到开始玩捷径.一直以来,节假日闹钟不会自动跳过的问题是困扰着iOS用户的一个问题,专门做一个捷径每天去点一遍--算了,太智障.这个问题 ...

  4. 让生命孤独的怒放——《晚安 北京》读后感

    经朋友的推荐,"汪峰是当今音乐界非常有思想的一位音乐创作者",怀着好奇,我毅然决然的买下了这本<晚安 北京>汪峰的代表作品,读完以后给我这二十多岁的年轻人一种独特而不同 ...

  5. unicloud使用云开发每天定时向女朋友发送短信(api获取/数据库固定+情话用完短信警告/自定义情话/晚安)

    上次我们使用云函数定时向女朋友推送邮件 使用云函数每天定时向女朋友发送邮件推送天气 代码已放置github https://github.com/dmhsq/uniCloud-demo 开发工具 Hb ...

  6. Github Actions + 腾讯云函数实现微信推送天气、课表,上课提醒,每日晚安心语

    前言: 最近发现dy很火的一个小项目,刚好想学习一下微信公众号推送相关知识.基于别人的项目(只有天气推送,原作者忘了抱歉!),增加了一些自己的需求:1.每日推送天气的时候顺便推送当天的课程: 2.如果 ...

  7. 看图识物_有声绘本故事《晚安,建筑工地》看图识物,嘘,晚安

    亲爱的小朋友们,我是小故,你喜欢挖掘机吗,你喜欢翻斗车吗?你的心中是不是希望能够收集所有的工程车来玩呢?我们今天的故事呢就发生在一个建筑工地上.建筑工地上当然就有各种各样的工程车啦,我们看看它们都在忙 ...

  8. 微信python天天学_教你使用python实现微信每天给女朋友说晚安

    本文为大家分享了教你用微信每天给女朋友说晚安的python实战,供大家参考,具体内容如下 但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每天给朋友定时微信发送& ...

  9. 晚安,2017。你好,2018。

    2017即将过去,这几天总想写点什么,记录下这多事的一年. 17年对于我来说是意义非凡的一年,是历经磨难的一年.这一年发生了很多事,是在20多年成长学习生涯中收获最多的一年,也是做决定最多的一年.我的 ...

最新文章

  1. linux]ubuntu挂载U盘
  2. 073_html5视频
  3. PyTorch 实现经典模型4:GoogLeNet
  4. 转-HTTPClient调用https请求,通过基本认证用户名密码(Basic Auth)
  5. python版本可执行可嵌入_Python程序打包成exe可执行文件的方法探究
  6. http://www.raywenderlich.com/tutorials http://www.appcoda.com/tutorials/ http://www.entlib.net/
  7. UVA154 Recycling【水题】
  8. [转载] javascript入门_WebAssembly入门-仅使用14行JavaScript
  9. vscode自动生成项目目录结构
  10. Python基础之面向对象
  11. 20190105 东非大裂谷
  12. Ubuntu安装eog遇到的坑及解决方案
  13. Codeforces Gym 100015B Ball Painting 找规律
  14. TypeError: can‘t unbox heterogeneous list: int64 = float64
  15. 小程序: webview与小程序之间的跳转
  16. css3 实现十字光标和光标外圆圈环绕
  17. sim卡换新卡显示无服务器,SIM卡又现新漏洞 SIM卡无服务 SIM卡被锁怎么办?
  18. 用modprobe 加载模块时,提示模块找不到的问题
  19. 停车还能360全方位影像_汽车新技术:360全景环视系统技术
  20. OpenAI 推出漏洞赏金计划,最高奖励 2 万美元;京东零售开启 5 年来最大组织变革;​Django 4.2|极客头条

热门文章

  1. 基于Go语言Gin+Xorm的OA办公系统
  2. テクニカルアーティストの基本的な役割と、もう1つ重要な役割
  3. PLC振荡电路——控制灯闪烁
  4. 如何用函数求出身份证号码中的出生日期——CONCATENATE、MID函数的使用方法
  5. 利用sql profile固定执行计划加快OGG同步
  6. 平面解析几何----圆锥曲线焦点弦上焦半径的倒数和为ep分之2的初等几何证明
  7. 大学英语(第四册)复习(原文及全文翻译)——Unit 3 - WHY DO WE BELIEVE THAT THE EARTH IS ROUND?(我们为什么相信地球是圆的?)
  8. python特效源代码_人工智能python代码实现魔幻换天视频特效
  9. 我的北漂在路上--------时不时的停下脚步思考
  10. Retrofit2.0介绍使用封装