自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pigff的博客

一个进阶中的程序猿的博客

  • 博客(20)
  • 问答 (1)
  • 收藏
  • 关注

原创 网络编程套接字(3)——socket读写数据接口API

对文件的读写操作read和write同样适用于socket。但是socket编程接口提供了专门的几个socket读写数据的接口。UDP数据读写函数recvfrom(从另一个IP接收数据)ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen...

2018-05-14 17:45:22 4395

原创 网络编程套接字(2)——基本socket API接口

创建socketint socket(int domain, int type, int protocol);socket()打开一个网络通讯端口,如果成功的话,返回一个socket文件描述符(有一种文件类型是socket文件)应用程序可以像读写文件一样用read/write在网络上收发数据如果socket()调用失败则返回-1对于IPv4,domain参数指定为AF_INET(或者是PF_INE...

2018-05-14 16:53:25 803

原创 网络编程套接字(1)——socket地址API

主机字节序和网络字节序32位的机器CPU累加器一次能装载至少4字节(32位)的数据,即一个整数。这4个字节在内存中排列的顺序将影响它被累加器装载成整数的值,这就是字节序的问题。字节序分为大端字节序和小端字节序大端字节序是指一个整数的高位字节(23-31位)放在内存的低地址,低位字节(0-7位)放在内存的高地址处小端字节序是指一个整数的高位字节放在内存的高地址处,低位字节放在内存的低地址处写一段程序...

2018-05-11 13:02:00 1210

原创 TCP/IP协议族的传输层基础(6)——TCP协议提高性能的机制

TCP采用下面的方式来提供传输的性能滑动窗口快速重传延迟应答捎带应答首先介绍一下TCP的发送缓冲区和接收缓冲区,这是TCP面向字节流的保障创建一个TCP的socket,同时会在内核中创建一个发送缓冲区和接收缓冲区调用write时,数据会先写入发送缓冲区中如果发送的字节数太长,会被拆分成多个TCP的数据包发出如果发送的数据太短,就会先在缓冲区里等待,等待缓冲区长度差不多了,或者其他合适的时机发送出去...

2018-05-10 11:24:55 881

原创 TCP/IP协议族的传输层基础(5)——TCP协议的可靠性机制

TCP采用的下面的方式来实现可靠性  确认应答机制(ACK) 超时重传机制 校验和 序列号 连接管理(三次握手四次挥手) 流量控制 拥堵控制 确认应答(ACK)机制 连接成功之后,发送的每条数据都可能丢失,因此就需要确认应答。 TCP将每个字节的数据都进行了编号,即为序列号 每一个ACK都带有对应的...

2018-05-10 11:00:34 1187

原创 TCP/IP协议族的传输层基础(4)——TCP协议的状态转移

TCP的状态转化上一篇文章我们已经看到了TCP连接的两方会处于不同的状态,我们再来看一下这张图。 下图是TCP完整的状态转化图,红色线是一般的服务器状态转移的线,蓝色线是一般的客户端的状态转移的线,灰色线表示特殊情况下的状态转移。   下面我们来看一下这些状态转化的具体过程服务器端的状态转化 ①[CLOSED-->LISTEN]:服务器调用lis...

2018-05-10 10:43:54 425

原创 TCP/IP协议族的传输层基础(3)——TCP协议的三次握手与四次挥手

TCP连接的建立和关闭我们先通过tcpdump来抓取一个建立连接的TCP报文,假设我们有两台机器,在一台机器上通过telnet应用程序远程登录另一台的telnet客户端,查看之间交换的TCP报文。执行下面的命令sudo tcpdump -nt -i eth0 '(src 192.168.224.136 and dst 192.168.224.138) or (src 192.168.224.138...

2018-05-08 17:40:40 393

原创 TCP/IP协议族的传输层基础(2)——TCP协议的头部结构

TCP协议(Transmission Control Protocol,传输控制协议)TCP协议为应用层提供可靠的、面向连接的和基于流的服务。可靠的TCP采用发送应答机制(ACK),这是TCP可靠传输的关键,其他的可靠传输基本上在这基础上添加的一些方法,即发送端发送的每一个报文都必须得到对方的应答,才认为这个TCP报文段传输成功。TCP采用超时重传机制,发送端发送出一个TCP报文段之后启动定时器,...

2018-05-08 16:04:03 1307

原创 TCP/IP协议族的传输层基础(1)——UDP协议

 传输层为两台主机上的应用程序提供端到端(end to end)的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。 传输层的协议主要有三个:TCP协议(Transmission Control Protocol,传输控制协议)UDP协议(User Datagram Protocol,用户数据报协议)SCTP协议(Stream Control Tra...

2018-05-05 17:04:46 546

原创 TCP/IP协议族的网络层基础(6)——NAT和NAPT

NAT技术(Network Address Translation,网络地址转换)NAT技术是解决IP地址不够用的主要手段,是路由器的一个重要功能NAT能够将私有IP对外通信时转为公有IP,也就是一种将私有IP和全局IP相互转化的技术方法公有IP要求是唯一的,但私有IP不需要;在不同的局域网中出现相同的私有IP是不受影响的一般每个终端设置私有IP,而在路由器或必要的服务器上设置公有IP我们再来看看...

2018-05-05 16:26:58 6006 2

原创 TCP/IP协议族的网络层基础(5)——ICMP协议以及ping命令

ICMP协议(Internet Control Message Protocol,控制报文协议)ICMP的报文格式如下图8位类型字段用于区分报文类型。它将ICMP报文分为两大类:差错报文:主要用于回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5)查询报文:用于查询网络信息,比如ping命令就是使用ICMP报文查看目标是否可到达(类型值为8)的有的类型通过8位代码字段来进一步细分不同...

2018-05-05 16:23:26 2406

原创 TCP/IP协议族的网络层基础(4)——IP路由

IP数据包的传输过程(路由)IP协议的一个核心任务就是数据报的路由,即决定发送数据报到目标机器的路径。当一个IP数据报从数据链路层传输到IP模块的时候,IP模块的工作流程如下:当IP模块接收到IP数据报,先对数据报的头部做CRC校验,确认无误之后就分析其头部的具体信息如果该数据报设置了源站路由选项(头部选项字段中的松散源路由选择或严格源路由选择),则IP模块就调用数据报转发子模块来处理该数据报IP...

2018-05-05 16:03:01 432

原创 TCP/IP协议族的网络层基础(3)——IP分片

之前的文章中我们讨论过,一旦IP数据报大小超过MTU的限制,就会被分片(如果在IP头部设置禁止分片标志将返回ICMP错误),具体看MTU对IP协议的影响。之前我们用图片的方式形象地描述了是如何分片的,下面我们用tcpdump抓个包看看IP协议究竟是怎么分片的。 IP头部中有三个字段用来描述分片和分片之后在接收端的重组:16位数据报标识,3位标志和13位片偏移。一个IP数据报的每个分片都有自己的IP...

2018-05-03 17:39:52 477

原创 TCP/IP协议族的网络层基础(2)——IP协议头部结构

网络层最核心的协议就是IP协议(Internet Protocol,因特网协议)。IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就为它寻找一个合适的下一跳(next hop)路由器,并将数据包交付给路由器来转发。多次重复这个一跳一跳的过程,最终将数据包交送给目标主机,或者由于发送失败而被丢弃。IP协议的三个特点:无状态:是指IP通信双方不同步传输数...

2018-05-03 16:15:54 1129

原创 TCP/IP协议族的网络层基础(1)——网段划分

    网络层实现数据包的选路和转发。WAN(广域网)通常使用众多分级的路由器来连接分散的主机或LAN(局域网),因此通信的两端通常不是直接相连的,而是通过多个中间节点(路由器)连接的。    网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络连接的细节,使得在传输层和网络应用程序看来,通信的双方是直接相连的。     下面三个名词的概念需要区分一下:...

2018-05-03 16:08:40 6048

原创 域名解析的DNS协议

域名解析的DNS协议        DNS协议也是一种应用层协议。因为用户通常使用主机名或域名来访问对方的计算机,而不是通过IP地址问(比如说访问www.baidu.com就是通过域名) 背景最初一开始使用hosts文件来描述主机名和IP地址的关系,比如host-a的主机名的IP地址为172.20.2.1最初是有互联网信息来管理这个hosts文件的但是这就很麻烦,如果一个新的计算机要接入网络,或者...

2018-05-03 11:09:23 2834

原创 TCP/IP协议族的数据链路层基础(2)——ARP协议

ARP协议(Address Resolution Protocol)    ARP协议是一个介于数据链路层和网络层之间的协议,它建立了主机IP地址和MAC地址的映射关系。ARP协议是一种用以解析地址的协议,根据通信双方的IP地址就可以反查出对应的MAC地址。在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址数据包首先是被网卡接收到再去处理上层协议的,如果接收到...

2018-05-03 09:32:25 450

原创 TCP/IP协议族的数据链路层基础(1)——MTU

     数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网,令牌环网等)上的传输。不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供了一个接口。    数据链路层常用的两个协议是ARP协议(Address Resolve Protocol,地址解析协议)和RARP协议(Reverse Address Resolve Protocol,逆地址解析协议...

2018-05-03 09:20:43 617

原创 tcpdump抓包工具以及netstat命令功能总结

tcpdump是一款经典的抓包工具,下面是选项总结- n使用IP地址表示目标主机,而不是主机名;使用数字表示端口号,而不是服务名称- i指定要监听的网卡接口。“ -i any”表示抓取所有网卡接口上的数据包- v输出一个稍微详细的信息,例如,显示IP数据包中的TTL和TOS信息- t不打印时间戳- e显示以太网帧头部信息- c仅抓取指定数量的的数据包- x以十六进制数显示数据包的内容,但不显示包中...

2018-05-02 16:39:10 1262

原创 TCP/IP协议族的封装与分用

封装    TCP/IP协议族的上层协议是通过封装来使用下层服务的。应用程序数据在发送到物理网络之前,将沿着协议族从上往下依次封装。每层协议都将在上层协议的基础上加上自己的头部信息(以太网还包括尾部信息),以实现改成的功能,这个过程就是封装。    经过TCP封装后的数据成为TCP报文段(TCP message segment),或简称TCP段。TCP协议为通信双方维护一个连接,并且在内核中存储相...

2018-05-02 16:36:05 4265

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除