Linu网络编程

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Linux网络编程入门套接字学习教程之一socket函数read write send和recvLinux下getsockopt/setsockopt 函数说明套接口选项 读取 sock_opts getsockopt setsockopt异步套接字基础:sele...







UNIX SOCKET编程简介




服务器端程序编写:
(1) 调用ServerSocket(int port)创建一个服务器套接字,并绑定到指定端口上。
(2) 调用accept(),监听连接请求,则接受连接,返回通信套接字。
(3) 调用Socket类的getOutStream() 和 getInputStream 获取输出流和输入流,开始网络数据的发送和接受。(用到的函数是send(),recv())
(4)关闭通信套接字:Socket.close().
说明:编写服务器程序时,先调用socket()创建一个套接字,调用bind()绑定IP地址和端口,并进行监听listen(),然后启动一个死循环,循环中调用accept()接受连接。对于每个接受的连接,可以启动多线程方式进行处理,在线程中调用send(), recv()发送和接受数据

 客户端程序编写:
(1) 调用Socket() 创建一个流套接字,并连接服务器。(函数是connect())
(2)调用Socket类的getOutputStream()和fetInputStream获取输出流和输入流,开始网络数据的发送和接受,(用到的函数是send(),recv())
(3)关闭通信套接字Socket.close()。

OSI标准七层中最重要的是传输层,它把实际使用的通信子网与高层应用分开,提供发送端 和接收端之间的可靠低成本的数据传输。TCP和UDP协议属于这一层。
网络层:主要对主机和网络之间的交互进行定义,它又被成为通信子网层,定义了在网络中传输的基本数据单元以及目的寻址和选路的概念,IP协议输入这一层。
OSI标准:应用层(Application)—表示层(Presentation)—会话层(Session)—传输层(Transport)—网络层(Network)—数据链路层(Data Link)—物理层(Physical)

TCP/IP协议是一组在网络中提供可靠数据传输和无连接数据服务的协议。其中提供可靠数据传输的协议称为传输控制协议TCP,而提供无连接服务的协议叫做网际协议IP。TCP/IP协议是一个包含很多其他协议的一个网络协议集合。
TCP/IP协议的网络提供的主要服务有:电子邮件,文件传输,远程登录,网络文件系统,电视会议系统以及万维网等
TCP/IP协议的体系结构是:应用层—传输层(TCP、UDP、ICMP)—网络层(IP协议)—网络接口层

TCP建立连接时使用“三次握手协议TWH”方式:
(1) 客户端先用connect()向服务器发出一个要求连接的信号SYN1。
(2) 服务器进程接收到这个信号后,发回应答信号ack1,同时也这也是一个要求回答的信号SYN2。
(3) 客户端收到信号ack1和SYN2后,再次应答ack2。
(4) 服务器受到应答信号ack2,一次连接才算建立完成。
TCP三次握手连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
 Backlog参数:表示未连接队列的最大容纳数目。 
SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
TCP断开连接
采用四次握手断开一个连接

断开连接其实从我的角度看不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类的函数开始主动终止一个连接。

 第一次握手:当调用close函数断开一个连接时,主动断开的一方发送FIN(finish报文)给对方。有了之前的经验,我想你应该明白我说的FIN报文是什么东西,也就是一个设置了FIN标志位的报文段。FIN报文也可能附加用户数据,如果这一方还有数据要发送时,将数据附加到这个FIN报文时完全正常的。之后你会看到,这种附加报文还会有很多,例如ACK报文。

 第二次握手:当被动关闭的一方收到FIN报文时,它会发送ACK确认报文(对于ACK这个东西你应该很熟悉了)。这里有个东西要注意,因为TCP是双工的,也就是说,你可以想象一对TCP连接上

有两条数据通路。当发送FIN报文时,意思是说,发送FIN的一端就不能发送数据,也就是关闭了其中一条数据通路。被动关闭的一端发送了ACK后,应用层通常就会检测到这个连接即将断开,然后被动断开的应用层调用close关闭连接。

 第三次握手:被关闭端一旦当调用close(or closesocket),这一端就会发送FIN报文。也就是说,现在被动关闭的一端也发送FIN给主动关闭端。有时候,被动关闭端会将ACK和FIN两个报文合在一起发送。 

第四次握手:主动关闭端收到FIN后也发送ACK,然后整个连接关闭(事实上还没完全关闭,只是关闭需要交换的报文发送完毕),四次握手完成。

如你所见,因为被动关闭端可能会将ACK和FIN合到一起发送,所以这也算不上

img_87a7c41a27b22eba5d0a48889005aabd.png


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的信息安全新挑战
【9月更文挑战第29天】在数字化浪潮的推动下,云计算服务如雨后春笋般涌现,为各行各业提供了前所未有的便利和效率。然而,随着数据和服务的云端化,网络安全问题也日益凸显,成为制约云计算发展的关键因素之一。本文将从技术角度出发,探讨云计算环境下网络安全的重要性,分析云服务中存在的安全风险,并提出相应的防护措施。我们将通过实际案例,揭示如何在享受云计算带来的便捷的同时,确保数据的安全性和完整性。
|
4天前
|
SQL 安全 算法
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第29天】随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者了解网络安全的重要性,提高自身的网络安全意识。
|
4天前
|
存储 SQL 安全
网络安全与信息安全:构建安全防线的关键策略
本文深入探讨了网络安全与信息安全领域的核心要素,包括网络安全漏洞、加密技术以及安全意识的重要性。通过对这些关键领域的分析,旨在为读者提供一套综合性的防护策略,帮助企业和个人在日益复杂的网络环境中保障数据安全。
15 4
|
1天前
|
安全 网络协议 网络安全
网络安全与信息安全:漏洞、加密与意识的三重奏
【9月更文挑战第32天】在数字世界的交响乐中,网络安全是那不可或缺的乐章。本文将带您深入探索网络安全的三大主题:网络漏洞的识别与防范、加密技术的奥秘以及安全意识的重要性。通过深入浅出的方式,我们将一起揭开这些概念的神秘面纱,并学习如何在实际生活中应用它们来保护自己的数字足迹。让我们开始这场既刺激又富有教育意义的旅程,提升个人和组织的网络安全防御能力。
|
3天前
|
SQL 安全 程序员
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第30天】在数字化时代,网络安全和信息安全已成为全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及提升安全意识的重要性。我们将通过代码示例,深入理解网络安全的基础知识,包括常见的网络攻击手段、防御策略和加密技术的实际应用。同时,我们还将讨论如何提高个人和企业的安全意识,以应对日益复杂的网络安全威胁。
|
2天前
|
SQL 安全 算法
数字时代的守护者:网络安全与信息安全的现代策略
【9月更文挑战第31天】在数字化时代,网络安全与信息安全成为保护个人隐私和企业资产的关键。本文将深入探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性,旨在为读者提供防范网络威胁的策略和知识分享。
17 7
|
6天前
|
人工智能 供应链 安全
网络安全与信息安全:构建数字世界的坚固防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要基石。本文旨在探讨网络安全漏洞、加密技术及安全意识等关键领域,通过深入浅出的方式,引导读者理解网络安全的核心要素,并分享实用的防护策略,共同守护我们的数字世界。
随着互联网技术的飞速发展,网络安全威胁日益凸显,成为全球关注的焦点。本文聚焦网络安全的三大核心议题——网络安全漏洞、加密技术与安全意识,旨在揭示它们之间的相互关联与重要性。通过剖析真实案例,展现网络攻击的复杂性与破坏力;解析加密技术的原理与实践,强调其在保护数据安全中的关键作用;同时,倡导提升公众安全意识,构建多层次的网络安全防护体系。本文不仅为专业人士提供技术参考,也旨在提高普罗大众的网络安全认知,共同筑牢数字世界的安全防线。
|
2天前
|
存储 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第31天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将从网络安全漏洞、加密技术和安全意识等方面进行知识分享,帮助读者更好地了解和保护自己的网络安全。
|
3天前
|
安全 网络安全 数据安全/隐私保护
数字时代的守护者:网络安全与信息安全的深度剖析
【9月更文挑战第30天】在数字化浪潮中,网络安全与信息安全成为我们不可忽视的盾牌。本文将深入探讨网络安全漏洞的形成、加密技术的应用以及提升安全意识的重要性,旨在为读者提供一套全面的网络安全知识体系。通过分析最新的网络攻击案例,我们将揭示防御策略和最佳实践,帮助个人和企业构筑坚固的数字防线。
16 5
|
5天前
|
存储 安全 网络安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
【9月更文挑战第28天】在数字化时代,云计算已成为企业和个人存储和处理数据的首选方式。然而,随着云服务的普及,网络安全问题也日益凸显。本文将从云服务、网络安全、信息安全等方面探讨云计算与网络安全的关系,分析云计算环境下的网络安全挑战,并提出相应的应对策略。通过本文,您将了解到如何在享受云计算带来的便利的同时,保护您的数据安全。
下一篇
无影云桌面