网络原理 -Posix API

简介: 网络原理 -Posix API

网络原理 -Posix API

思考

  • Posix API 有哪些?
  • 三次握手的过程 ?发生在什么函数中?
  • Accept发生在三次握手的哪一步?
  • 数据发送过程怎么解决粘包分包的问题?
  • 四次挥手过程?服务器出现大量的close_wait()原因?
  • 被动方, 主动方的tcb的回收是在什么时候?
  • websocket 为什么设置FIN位
  • TCP在listen时的参数backlog的意义?

八种Posix API

Tcp server:1.socket();2.bind();3.listen();4.accept();5.recv();6.send();7.close()

Tcp client:1.socket();2.bind()(optional);3.connect();4recv();5.send();6.close()

非必须设置socket参数:setsockopt();getsockopt()

bind() 的主要作用:接受或者发送数据,用来填充本机的IP与端口。

socket是什么?

socket,socket有两部分组成fdtcb,即文件描述符,tcb即tcp控制块,就像插座一样,就是fd,是文件系统中的文件描述符,可以被“操作的”。tcb在协议栈当中,我们“不需要管”,就像所谓的,不用管具体是什么样。当操作fd,调用send(),fd的数据就放到sendbuffer中,当调用recv()时将recvbuffer中的数据放到fd中。

socket 5元组

站在客户端角度来说socket五元组(remoteip, remoteprot,localip, localport,proto)中remoteip与remoteprot 为远端IP和端口,即服务器的IP和端口,localip与localport为本地IP和端口,即客户端IP和端口,proto是协议。

站在服务器角度来说(source ip, source port, dest ip, dest port, proto)中source ip与source port为源IP与端口,即客户端IP与端口,dest ip与dest port 为目的IP与端口,即服务器IP与端口,proto是协议

// socket创建的fd从3开始
//0为stdin,1为stdout,2为stderr
int fd = socket();
fd = 3

“一见钟情”与“移情别恋”

三次握手过程

三次握手发生在connect()函数里面。connect()类似一个导火索

int clientfd = accept();
只做两件事情:1、从全连接队列取出一个节点;2、为该节点分配fd放到。
fd -->tcb,通过五元组

数据的发送

为什么会出现粘包拆包以及怎么解决?

粘包粘包 简单的来讲就是接收端收的次数比发送端发送的次数少,出现两个包合在一起的情况。

简单说有以下几种情况:

1.TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。

2.接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包。

3.待发送数据大于最大报文长度(MMS),TCP在传输前将进行拆包。

4.发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。

简单的来说,TCP是基于字节流的,即使应用层和TCP传输层之间的数据交互是大小不等的数据块,然而TCP把这些数据块仅仅看成一连串无结构的字节流,没有边界。从TCP的帧结构也可以看出,在TCP的首部没有表示数据长度的字段,基于这两点,TCP传输数据时,才会出现粘包或者拆包现象的可能。

解决方式,简述两种解决思路:1.在协议前加上要传输数据长度。2.加上包的分隔符。

另外,这里还有一个问题,如何保证我们接收的数据是顺序的?所谓的顺序,就是先发的先到。这里要说的就是延迟ack,它可以保证所谓的“顺序”

留一个思考:Tcp已经这么强了,为什么还要有UDP?

四次挥手的过程

主动方调用close()函数后,fin位置1,申请断开连接。

服务器出现大量的close_wait()原因与解决方式?

原因:

1.没有及时调用close()函数。

2.业务逻辑的问题。

简述解决方案: 要么提前调用close(),要么将业务信息放在线程池去处理,close放在另一个线程中去处理。

websocket 为什么设置FIN位

把业务买用户数据清空,防止出现大量的close_wait(),再完成这些操作以后再调用close()关闭。

思考问题:作为客户端,做一个业务的请求(如http的请求),请求第三方的业务。出现一种情况,客户端一直处于fin_wait2的状态(可能由于在server端中close之前,服务器掉电客户端直接进入fin_wait2的状态),要么这个问题就不解,再启动一个连接。如果FIN_WAIT_2的超时时间(tmo)大于TCP_TIMEWAIT_LEN(60秒)的时长,启动keepalive定时器,定时时长为二者之差(tmo - TCP_TIMEWAIT_LEN)。

client与server同时发送fin的情况

服务器出现大量的time_wait怎么做?

**简述原因:**应用中产生大量TIME_WAIT状态的根本原因是频繁创建断开连接TCP连接。要解决TIME_WATIT状态过多的问题,就要分析我们的应用把频繁创建的短连接改为长连接。

    后台业务服务器,通常需要调用redis、mysql以及其他http服务和grpc服务,在服务相互调用中,如果使用的是短连接,高并发时就会产生大量TIME_WAIT。一般情况下,redis等客户端会有连接池,我们要做的是设置好相关的连接服用参数,一般会有连接数、连接重用时间、连接空闲数等。所以在应用中通过设置合理的连接池参数可以避免TIME_WAIT状态过多的问题。

总结

1)POSIX API八个,socket(), bind()具体作用;

2)三次握手的过程,中间发生在哪些API当中,connect()是怎么调用,listen()accept()是怎么执行;

3)数据传输的过程,send()拷贝数据到sendbuffer中,内核协议栈决定怎么去发送,recv()将recvbuffer中将数据拷出来;

4)四次挥手,断开连接的过程,close()的操作,以及相关过程中遇到的问题。

5>clientserver同时发送fin。


相关文章
|
24天前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
61 3
|
2月前
|
并行计算 安全 网络协议
探索未来网络:量子互联网的原理与应用
本文深入探讨了量子互联网的基本概念、技术原理及其潜在应用。通过对量子纠缠、量子叠加和量子隐形传态等核心概念的解释,文章展示了量子互联网如何利用量子力学特性来实现超高速、超高安全性的通信。此外,还讨论了量子互联网在金融、医疗、国防等领域的应用前景,以及当前面临的技术挑战和未来的发展方向。
72 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络的核心原理
本文将深入浅出地介绍深度学习的基本概念,包括神经网络的结构、工作原理以及训练过程。我们将从最初的感知机模型出发,逐步深入到现代复杂的深度网络架构,并探讨如何通过反向传播算法优化网络权重。文章旨在为初学者提供一个清晰的深度学习入门指南,同时为有经验的研究者回顾和巩固基础知识。
73 11
|
7天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
22 3
|
18天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
29天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
82 1
|
1月前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
1月前
|
存储 安全 算法
网络安全与信息安全:构建数字世界的防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系现代社会正常运转的关键支柱。本文旨在深入探讨网络安全漏洞的成因与影响,剖析加密技术的原理与应用,并强调提升公众安全意识的重要性。通过这些综合性的知识分享,我们期望为读者提供一个全面而深刻的网络安全视角,助力个人与企业在数字时代中稳健前行。
本文聚焦网络安全与信息安全领域,详细阐述了网络安全漏洞的潜在威胁、加密技术的强大防护作用以及安全意识培养的紧迫性。通过对真实案例的分析,文章揭示了网络攻击的多样性和复杂性,强调了构建全方位、多层次防御体系的必要性。同时,结合当前技术发展趋势,展望了未来网络安全领域的新挑战与新机遇,呼吁社会各界共同努力,共筑数字世界的安全防线。
|
1月前
|
存储 安全 自动驾驶
探索未来网络:量子互联网的原理与应用
【10月更文挑战第2天】 本文旨在探讨量子互联网的基本原理、技术实现及其在通讯领域的革命性应用前景。量子互联网利用量子力学原理,如量子叠加和量子纠缠,来传输信息,有望大幅提升通信的安全性和速度。通过详细阐述量子密钥分发(QKD)、量子纠缠交换和量子中继等关键技术,本文揭示了量子互联网对未来信息社会的潜在影响。
|
18天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!

热门文章

最新文章