![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络编程
文章平均质量分 86
weixin_44135544
这个作者很懒,什么都没留下…
展开
-
socket网络编程之常用地址API
通用socket地址 socket网络编程接口中表示socket地址的是结构体sockaddr,定义: sa_family成员是地址族类型(sa_family_t)的变量。地址族类型通常与协议族类型对应。常见的协议族(protocol family,也称domain)和对应的地址族如下: 宏PF_*和AF_*都定义在bits/socket.h头文件中,且后者与前者有完全相同的值,所...原创 2020-01-03 21:38:29 · 363 阅读 · 0 评论 -
socket之创建、命名、监听、连接、关闭
创建socket时,指定了地址族,但是并未指定使用该地址族中的那个具体socket地址。将一个socket与socket地址绑定称为给socket命名。在服务器程序中,我们通常要命名socket,因为只有命名后客户端才能知道该如何连接它。客户端通常不需要命名socket,而是采用匿名方式,即使用操作系统自动分配的socket地址。 命名的socket的系统调用是bind,定义如下: ...原创 2019-12-18 21:41:15 · 2019 阅读 · 0 评论 -
TCP详解之拥塞控制
概述 TCP模块还有一个重要任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性,这就是所谓的拥塞控制。 拥塞控制的四个部分:慢启动、拥塞避免、快速重传、快速恢复。拥塞控制算法在Linux下有多种实现,比如reno、vegas和cubic算法,他们部分或全部实现了上述四个部分。/proc/sys/net/ipv4/tcp_congestion_control文件指示机器...原创 2019-12-05 10:22:06 · 470 阅读 · 0 评论 -
TCP协议详解之带外数据
; 有些传输层协议具有带外数据的概念,用于迅速通告对方本端发生的重要事件。因此带外数据比普通数据有更高的优先级,它应该总是立即被发送,而不论发送缓冲区中是否有排队等待发送的普通数据。带外数据的传输可以使用一条独立的传输层连接,也可以映射到传输普通数据的连接中。 ; UDP没有实现带外数据传输,TCP也没有真正的带外数据。TCP是利用其头部中的紧急指针标志和紧急指针两个字段,给应用程序提供了一种...原创 2019-12-04 09:23:56 · 489 阅读 · 0 评论 -
TCP协议详解之交互数据流和成块数据流
TCP报文段所携带的应用程序数据按照长度分为两种:交互数据和成块数据。 交互数据仅包含很少的字节。使用交互数据的应用程序或协议对实时性要求高。 成块数据的长度则通常为TCP报文段允许的最大数据长度。使用成块数据的应用程序对传输效率要求高。TCP交互数据流 客户端对服务器返回的数据所发送的确认报文段都不携带任何应用程序数据,而服务器每次发送的确认数据报都包含它需要发送的应用程序数据...原创 2019-12-03 16:56:08 · 287 阅读 · 0 评论 -
TCP协议详解之TCP复位报文段
在某些特殊条件下,TCP连接的一端回向另一端发送携带RST标志的报文段,即复位报文段,以通知对方关闭连接或重新建立连接。访问不存在的端口 当客户程序访问一个不存在的端口时,目标主机将给他发送一个复位报文段。收到复位报文段的一端应该关闭连接或者重新连接,而不能回应这个复位报文段。异常终止连接 正常的终止方式:数据交换完成之后,一方给另一方发送结束报文段。 TCP提供了异常终止连接...原创 2019-12-02 09:33:09 · 207 阅读 · 0 评论 -
TCP协议详解之TCP连接的建立和关闭
三次握手和四次挥手 第一个TCP报文段包含SYN标志,因此它是一个同步报文段,即左边客户机向右边服务器发起连接请求。同时,该同步报文段包含一个ISN值为535734930的序号。 第二个TCP报文段也是同步报文段,表示服务器同意与客户机建立连接。同时它发送自己的ISN值为2159701207的序号,并对第一个同步报文段进行确认。确认值是535734931,即第一个同步报文段的序号值加一。...原创 2019-12-01 10:57:38 · 539 阅读 · 0 评论 -
TCP协议详解之TCP状态转移
状态转移综述 TCP连接的任意一端在任意时刻都处于某种状态,当前状态可以通过netsata命令查看。完整的状态转移图,描绘了所有的TCP状态以及可能的状态转换。 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开。服务器一旦监听到某个连接请求(收到同步报文段),就将该连接放入内核等待队列中,并向客户端发送带SYN标志的确认报文段。此时该连...原创 2019-11-30 10:51:44 · 330 阅读 · 0 评论 -
TCP详解之TCP头部结构
TCP头部结构 TCP头部信息出现在每个TCP报文段,用于指定通信的源端端口,目的端口,管理TCP连接等。TCP固定头部结构 16位端口号:告知主机该报文段是来自哪里(源端端口)以及传给哪个上层协议或应用程序(目的端口)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号(所有知名端口号定义在/etc/services文件中)。 ...原创 2019-11-29 16:37:58 · 896 阅读 · 0 评论 -
IP协议详解之IPv6头部结构简介
IPv6协议是网络层技术发展的必然趋势,因为它不仅解决了IPv4地址不够用的情况,还做了很大的改进,比如,增加了多播和流的功能,为网络上多媒体内容的质量提供精细的控制,引入自动配置功能,是的局域网管理更加方便,增加了专门的网络安全功能。IPv6固定头部结构 由40字节的固定头部和可变长的扩展头部组成。 4位版本号指定IP协议的版本。对于IPv6来说,其值是6。 8位.通信类型指...原创 2019-11-28 09:26:38 · 6966 阅读 · 0 评论 -
IP协议详解之IP转发
不是发送给本机的IP数据报将有数据报转发子模块来处理。路由器都能执行数据报的转发操作,而主机一般只发送和接受数据报,这是因为主机上/proc/sys/net/ipv4/ip_forward内核参数默认被设置为0。可以修改该值来使能主机的数据报转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward 对于允许IP数据报转发的系统(设置的主机或路由器)...原创 2019-11-28 09:23:54 · 794 阅读 · 0 评论 -
TCP、UDP简介
传输层协议主要有两个:TCP协议和UDP协议。 TCP协议相对于UDP协议的特点是:面向连接、字节流、和可靠传输。字节流服务: 发送端执行的写操作次数和接收端执行的读操作之间没有任何数量关系,取决于缓冲区的大小,TCP属于字节流服务。数据报服务: 发送端执行的写操作次数和接收端执行的读操作次数相同,UDP属于数据报服务。 TCP传输是可靠的。TCP协议采用发送应答机制...原创 2019-11-27 17:48:21 · 75 阅读 · 0 评论 -
IP协议详解之IP重定向之ICMP重定向
ICMP重定向报文 ICMP报文头部有三个固定字段:8位类型、8位代码和16位校验和。 ICMP重定向报文的类型值是5,代码字段有4个可选值,用来区分不同的重定向类型。主机重定向的代码值为1。 ICMP的数据部分提供了两个信息:1、引起重定向的IP数据报的源端IP地址。2、应该使用的路由器的IP地址。 接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由来转...原创 2019-11-27 11:25:15 · 2482 阅读 · 0 评论 -
IP协议详解之路由
简介 IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径。 路由指的就是IP数据报应该发送至哪个下一跳路由或者目标机器,以及经过哪个网卡来发送。IP模块工作流程 当IP模块接收到来自数据链路层的IP数据报时,它首先对该数据报的头部做CRC校验,无误后分析其头部信息。 如果该IP数据报的头部设置了源站选路选项(就是松散源路由选择或者严格源路由选择),则IP模块...原创 2019-11-26 18:04:31 · 544 阅读 · 0 评论 -
IP协议详解之IP分片
IP分片: 当IP数据报的长度超过帧的MTU时,它将被分片传输。分片可能发生在发送端,也可能发送在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装。 IP的分片和重组需要的信息由头部的三个字段提供:数据报标识、标志、偏移。一个IP数据报的每个分片都具有自己的IP头部,他们具有相同的标识值,但具有不同的片偏移。并且除了最后一个分片...原创 2019-11-25 10:55:49 · 1968 阅读 · 0 评论 -
IP协议详解之头部结构
IP头部信息: 出现在每个IP数据报中,用于指定IP通信的源端IP地址,目的端IP地址,指导IP分片和重组,以及指定部分通信行为。IP数据报的路由和转发: 发生在除目标机器之外的所有主机和路由器上。它们决定数据报是否应该转发以及如何转发。IP服务的特点 IP协议是TCP/IP协议族的动力,他为上层协议提供无状态、无连接、不可靠的服务。无状态: 是指IP通信双方不同步传输数据的...原创 2019-11-24 22:34:58 · 7992 阅读 · 0 评论 -
TCP/IP中的分用过程
上一篇讲到数据经过多级封装后为帧,在物理媒介上传输。当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。 以太网帧的分用过程: 帧通过上述分用步骤后,最终将封装前的原始数据送至目标服务(ARP服务或RARP服务或ICMP服务)或应用程序。这样,在顶层目标服务看来,封装和分用就...原创 2019-11-18 11:07:41 · 308 阅读 · 0 评论 -
TCP/IP协议中的封装理解
简介 上层协议如何使用下层协议?其实就是通过封装实现的。 应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递,每层协议都将在上层数据的基础上加上自己的头部信息(有时还有尾部信息),以实现该层的功能,这个过程就称为封装。 经过TCP封装后的数据称为TCP报文段。TCP协议为通信双方维持一个连接,并且在内核中存储相关数据,这部分数据中的TCP头部信息和TCP内核缓冲区(发送...原创 2019-11-15 20:47:37 · 1882 阅读 · 0 评论 -
TCP/IP协议族简介
文章目录1.简介1.简介TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能,而且通过若干协议来实现,上层协议使用下层协议提供的服务。...原创 2019-11-14 10:02:57 · 295 阅读 · 0 评论