8.6 socket套接字及TCP的实现框架

news2024/11/15 20:03:13

socket套接字

目录

socket套接字

体系结构的两种形式

几种常见的网络编程接口

socket套接字

socket常用API介绍

socket套接字

三元组【IP地址,端口,协议】

地址族结构体

套接字类型

TCP通信的实现过程


体系结构的两种形式

网络的体系结构 (Network Architecture) 是计算机网络的各层及其协议的集合,就是这个计算机网络及其构件所应完成的功能的精确定义(不涉及实现)

实现 (implementation) 是遵循这种体系结构的前提下,用何种硬件或软件完成这些功能的问题

几种常见的网络编程接口

Berkeley UNIX 操作系统定义了一种 API,它又称为套接字接口 (socket interface)

微软公司在其操作系统中采用了套接字接口  API,形成了一个稍有不同的 API,并称之为  Windows Socket

AT&T 为其 UNIX 系统 V 定义了一种 API,简写为 TLI (Transport Layer Interface)

socket套接字

socket常用API介绍

/*创建套接字*/ int socket(int domain, int type, int protocol);    

/*绑定通信结构体*/ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

/*监听套接字*/ int listen(int sockfd, int backlog);

/*处理客户端发起的连接,生成新的套接字*/ int accept(int sockfd, struct sockaddr *addr,

socklen_t *addrlen);

/*向服务器发起连接请求*/ int connect(int sockfd, const struct sockaddr *addr,  socklen_t addrlen);

socket套接字
三元组【IP地址,端口,协议】

IP地址:标识计算机
端口号:标识计算机当中的进程
协议:指定数据传输的方式

地址族结构体
//通用地址族结构体
struct sockaddr {
    sa_family_t sa_family;
    char      sa_data[14];
}

struct sockaddr_in {
    sa_family_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr;
};
struct sockaddr {
    uint32_t s_addr;
};

struct sockaddr_in6 {
    sa_family_t sin6_family;
    in_port_t sin6_port;
    uint32_t sin6_flowinfo;
    struct in_addr sin_addr;
    uint32_t sin6_scope_id;
};
struct sockaddr {
    unsigned char s6_addr[16];
};

//sa_family

AF_UNIX      使用本地域套接字的地址结构,用于本地通信

AF_INET       使用IPv4的通信地址结构

AF_INET6     使用IPv6的通信地址结构 ....

套接字类型

流式套接字 (SOCK_STREAM) 提供可靠的、面向连接的通信流;它使用TCP,从而保证数据传输的可靠性和顺序性

数据报套接字 (SOCK_DGRAM) 定义了一种不可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP

原始套接字(SOCK_RAW) 允许直接访问底层协议,如IP或ICMP,它功能强大但使用较为不便,主要用于协议开发。

 

TCP通信的实现过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保护云环境:云渗透测试和安全策略探究

随着云计算技术的快速发展,越来越多的组织将他们的数据和应用程序迁移到云端。然而,与此同时,云安全也面临着新的挑战。云渗透测试是一种评估云环境安全性的方法,它帮助组织发现并解决可能存在的漏洞和弱点。在本文中,…

docker - 部署java/python项目

目录 1、docker - 部署 java 项目 1. 创建 mysql 容器 2. 验证mysql,dbserver 连接 mysql ,服务器ip:3306 ,账户:root 密码:123456 3. 创建tomcat容器 4. 验证:http://ip:80 5. 开发项目war包,放到to…

【MOOC 作业】第2章 应用层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 什么是持久性连接?什么是非持久性连接?持久性连接与非持久性连接区别如何? 持久性连接:每个请求/响应对都经同一个 TCP 连接发送。非持久性连接:每个请求/…

【1401. 圆和矩形是否有重叠】

来源:力扣(LeetCode) 描述: 给你一个以 (radius, xCenter, yCenter) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2) ,其中 (x1, y1) 是矩形左下角的坐标,而 (x2, y2) 是右上角的坐标。 如果圆和矩…

灰狼优化算法GWO,优化VMD,适应度函数为最小样本熵或最小包络熵(可自行选择,代码已集成好,很方便修改)包含MATLAB源代码

近期评论区有小伙伴私信需要灰狼优化算法GWO法化VMD的,所以打算再写一篇。 与之前的文章不同,这篇文章作者考虑到,大家有可能会以最小样本熵或最小包络熵为适应度函数的,在这个程序中将会直接把样本熵和包络熵集成,在…

了解Facebook的算法如何工作,提高您的帖子曝光率

Facebook是全球最大的社交媒体平台之一,每天有数亿用户在上面发布内容、互动交流。然而,由于用户数量巨大,每天产生的信息量也是相当惊人的。 为了让用户看到最有用和最相关的内容,Facebook采用了一种复杂的算法来过滤和排序用户…

迅为RK3568开发板Buildroot 系统设置状态栏

Weston 支持在 weston.ini 配置文件的 shell 段设置状态栏的背景色、位置,以及在 launcher 段设置快捷启动程序,修改文件系统的/etc/xdg/weston/weston.ini 文件,如下所示: [shell] # 颜色格式为 ARGB8888 panel-color0xff002244 # top|…

【新星计划回顾】第八篇学习-多表联表查询(完结)

🏆🏆时间过的真快,这是导师回顾新星计划学习的第八篇文章! 在学习过程中,学员们也咨询了很多问题,我把一些问题整理以文章形式总结分享下。 最近这段时间非常忙,虽然导师首次参与新星计划活动已…

[内核笔记1]内核文件结构与缓存——inode和对应描述

由来:公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列,然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作,尽量的减少Nginx的阻塞。 但是由于System/V消息队列在使用前需要规定消息长度,且…

从古欧洲的四大族群变迁梳理欧洲两千年历史脉络

我们看今天的欧洲,不难发现有几种完全不同的生活方式和行为习惯,以北欧三国再加英德与荷兰等国人为代表,他们信奉新教,勤劳,做事一丝不苟,颇为绅士,所以瑞典、英国、德国创造出了极其辉煌的工业…

canvas判断画笔是否铺满区域

判断画布形状是否填满和百分比 <body> <canvas id"myCanvas" width"300" height"150" style"border:1px solid #d3d3d3;"> </canvas> <script> var cdocument.getElementById("myCanvas"); var ctx…

智慧水务调度系统-智慧水务大数据可视化管理系统

平台概述 智慧水务调度系统平台&#xff08;智慧水务大数据可视化管理系统平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧…

数据库模型设计案例分享(GaussDB版)

目录 一、前言 二、应用系统数据库设计的基本流程 三、数据库模型设计 1、概念结构设计阶段 2、逻辑结构设计阶段 3、物理结构设计阶段 四、小结 一、前言 GaussDB数据库是一款企业级分布式数据库&#xff0c;支持集中式和分布式两种部署形态。它面向金融互联网交易和政…

面试官:说下简历中提到的优化……

作者&#xff1a;张力尹 先来点废话&#xff1a; 听说最近 Android 岗位变多了&#xff0c;你去面试了么&#xff1f; 面试官&#xff1a;你简历中提到了卡顿优化&#xff0c;做了哪些优化呢&#xff0c;展开说说。 你&#xff1a;哦&#xff0c;脑子飞速闪过网上的文章&#x…

Python模块pytest全局初始化和局部初始化前置后置操作

在 pytest 中&#xff0c;我们可以通过 conftest.py 文件来实现全局的前置和后置操作。 conftest.py 文件是一个特殊的 pytest 文件&#xff0c;它可以定义一些 fixture 和钩子函数&#xff0c;这些 fixture 和钩子函数可以在当前目录及其子目录下的所有测试文件中使用。 下面…

VR全景如何制作,可以用在哪些领域?

引言&#xff1a; 虚拟现实&#xff08;VR&#xff09;全景制作正在以惊人的速度改变着我们的感官体验。通过VR全景技术&#xff0c;我们可以身临其境地探索虚拟世界&#xff0c;感受前所未有的沉浸式体验。 一&#xff0e;如何进行VR全景制作 1.什么是VR全景制作&#xff1f…

【雕爷学编程】Arduino动手做(127)---2004A LCD液晶屏模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【状态估计】基于卡尔曼滤波器和扩展卡尔曼滤波器用于 INS/GNSS 导航、目标跟踪和地形参考导航研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

计算机网络——自顶向下方法(第五章学习记录)

本章学习网络层&#xff1a;控制平面 控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理。 概述 通过前面的学习&#xff0c;我们已经知道转发表&#xff0…

Android使用echart展示图表

Android使用echart展示酷炫的图表 最近开发的时候&#xff0c;遇到了柱状图&#xff0c;刻度图等各种图表的展示。查资料发现&#xff0c;Android用的的最多的是MPAndroidChart&#xff0c;我也尝试了&#xff0c;一般的柱状图和饼状图都可以实现&#xff0c;但是刻度图就不行…