https://www.iteye.com/blog/lobin-2328266
1、TCP
网络地址
网络地址结构定义如下:
/* Internet address. */
struct in_addr
{
in_addr_t s_addr;
};
对于ipv4来说,网络地址是一个32位的地址,所以in_addr_t被定义为一个32位的无符号整型类型。
typedef uint32_t in_addr_t;
ip地址(点分格式)转换为32位的地址(in_addr_t)参考另一篇文章:https://www.iteye.com/blog/lobin-2511945
socket地址
socket地址包括协议簇、端口、网络地址信息。socket地址存在多种定义。
socket地址结构定义如下:
/* Structure describing an Internet (IP) socket address. */
#define __SOCK_SIZE__16/* sizeof(struct sockaddr)*/
struct sockaddr_in
{
sa_family_t sin_family;/* Address family*/
in_port_t sin_port;/* Port number*/
struct in_addr sin_addr;/* Internet address*/
/* Pad to size of `struct sockaddr'. */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int)
- sizeof(unsigned short int) - sizeof(struct in_addr)];
};
#define sin_zero__pad/* for BSD UNIX comp. -FvK*/
struct sockaddr {
sa_family_tsa_family;/* address family, AF_xxx*/
charsa_data[14];/* 14 bytes of protocol address*/
};
/* POSIX requires only at least 100 bytes */
#define UNIX_PATH_MAX 108
struct sockaddr_un {
sa_family_t sun_family; /* address family AF_LOCAL/AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* 108 bytes of socket address */
};
协议簇被定义为一个16位的无符号整型类型。
typedef uint16_t sa_family_t;
/* Supported address families. */
/*
* Address families.
*/
#define AF_UNSPEC 0 /* unspecified */
#define AF_UNIX 1 /* local to host (pipes, portals) */
#define AF_LOCAL 1 /* POSIX name for AF_UNIX */
#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK 3 /* arpanet imp addresses */
#define AF_PUP 4 /* pup protocols: e.g. BSP */
#define AF_CHAOS 5 /* mit CHAOS protocols */
#define AF_NS 6 /* XEROX NS protocols */
#define AF_ISO 7 /* ISO protocols */
#define AF_OSI AF_ISO /* OSI is ISO */
#define AF_ECMA 8 /* european computer manufacturers */
#define AF_DATAKIT 9 /* datakit protocols */
#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
#define AF_SNA 11 /* IBM SNA */
#define AF_DECnet 12 /* DECnet */
#define AF_DLI 13 /* Direct data link interface */
#define AF_LAT 14 /* LAT */
#define AF_HYLINK 15 /* NSC Hyperchannel */
#define AF_APPLETALK 16 /* AppleTalk */
#define AF_NETBIOS 17 /* NetBios-style addresses */
#define AF_INET6 23 /* IP version 6 */
#define AF_MAX 32
/*
* Protocol families, same as address families for now.
*/
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_LOCAL AF_LOCAL
#define PF_INET AF_INET
#define PF_IMPLINK AF_IMPLINK
#define PF_PUP AF_PUP
#define PF_CHAOS AF_CHAOS
#define PF_NS AF_NS
#define PF_ISO AF_ISO
#define PF_OSI AF_OSI
#define PF_ECMA AF_ECMA
#define PF_DATAKIT AF_DATAKIT
#define PF_CCITT AF_CCITT
#define PF_SNA AF_SNA
#define PF_DECnet AF_DECnet
#define PF_DLI AF_DLI
#define PF_LAT AF_LAT
#define PF_HYLINK AF_HYLINK
#define PF_APPLETALK AF_APPLETALK
#define PF_NETBIOS AF_NETBIOS
#define PF_INET6 AF_INET6
#define PF_MAX AF_MAX
协议簇被定义成和地址簇一样。
#define TCPCB_FLAG_FIN0x01
#define TCPCB_FLAG_SYN0x02
#define TCPCB_FLAG_RST0x04
#define TCPCB_FLAG_PSH0x08
#define TCPCB_FLAG_ACK0x10
#define TCPCB_FLAG_URG0x20
#define TCPCB_FLAG_ECE0x40
#define TCPCB_FLAG_CWR0x80
URG控制位:
带外(out-of-band)数据
ACK控制位
PSH控制位
RST控制位
SYN控制位
FIN控制位
状态:
enum {
TCP_ESTABLISHED = 1,
TCP_SYN_SENT,
TCP_SYN_RECV,
TCP_FIN_WAIT1,
TCP_FIN_WAIT2,
TCP_TIME_WAIT,
TCP_CLOSE,
TCP_CLOSE_WAIT,
TCP_LAST_ACK,
TCP_LISTEN,
TCP_CLOSING, /* now a valid state */
TCP_MAX_STATES /* Leave at the end! */
};
1、TCP_SYN_SENT
2、TCP_ESTABLISHED
3、TCP_CLOSE_WAIT
4、TCP_CLOSE
enum {
TCPF_ESTABLISHED = (1 << 1),
TCPF_SYN_SENT = (1 << 2),
TCPF_SYN_RECV = (1 << 3),
TCPF_FIN_WAIT1 = (1 << 4),
TCPF_FIN_WAIT2 = (1 << 5),
TCPF_TIME_WAIT = (1 << 6),
TCPF_CLOSE = (1 << 7),
TCPF_CLOSE_WAIT = (1 << 8),
TCPF_LAST_ACK = (1 << 9),
TCPF_LISTEN = (1 << 10),
TCPF_CLOSING = (1 << 11)
};
2、UDP
相关推荐
TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是网络通信中的两种主要传输协议,它们在互联网应用中扮演着至关重要的角色。TCP 和 UDP 都是位于 OSI 模型的第四层——传输层,但它们在连接...
在本实验中,我们主要关注的是“网络与分布计算”的第一部分——Lab1_Socket,这是西北工业大学软件学院的一个教学项目。这个实验的核心是利用Java编程语言实现基于TCP(传输控制协议)和UDP(用户数据报协议)的...
第一部分TCP事务协议 PDF完美版,目录大纲可跳转 第1章T/TCP 概述 1.1 概述 本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最 简单的情形。接着我们编写使用T C P的客户和服务器...
第一部分 CP事务协议 第1章 /CP概述 1.1 概述 1.2 UDP上的客户-服务器 1.3 CP上的客户-服务器 1.4 /CP上的客户-服务器 1.5 测试网络 1.6 时间测量程序 1.7 应用 1.8 历史 1.9 实现 1.10 小结 第2章 /CP协议 2.1 概述...
在计算机网络通信中,传输控制协议(TCP)与用户数据报协议(UDP)是最为常见的两种传输层协议,它们位于OSI七层模型中的第四层——传输层,同时也属于TCP/IP协议族的一部分。这两种协议在实际应用中各有特点和适用...
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是最基础且应用广泛的两种协议。在进行网络编程和相关技术研究时,理解这两种协议的工作原理和特性,对于设计稳定可靠的通信系统至关重要。下面将对TCP...
### TCP协议与UDP协议的区别 #### 一、TCP/IP协议栈概述 为了更好地理解TCP协议与UDP协议之间的区别,我们先来简要回顾一下TCP/IP协议栈的基本结构。TCP/IP协议栈是一个分层的网络通信模型,主要包括四个层次: 1...
传输层是计算机网络中的一个重要层次,在OSI七层模型中处于第四层,其主要作用是在源和目的端之间提供端到端的可靠通信。传输层协议能够识别主机中的不同应用程序,并确保数据能够准确地交付给正确的应用程序进程。...
本篇文章将详细讲解欧姆龙以太网通讯中TCP/UDP协议的应用及其PLC程序实例。 一、欧姆龙以太网通讯概述 欧姆龙的以太网通讯技术允许PLC与各种设备通过TCP/IP协议进行数据交换,这在现代自动化系统中极为重要。TCP...
### TCP/IP协议以及TCP与UDP协议区别 #### 一、TCP/IP协议概述 TCP/IP(Transmission Control Protocol/Internet Protocol)是一组用于实现网络互连的通信协议,它定义了电子设备(例如计算机)如何在网络中交换...
在IT领域,网络通信是核心部分之一,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种主要的传输层协议。本程序旨在帮助理解这两种协议的工作原理,并能够实际发送TCP和UDP数据包。下面我们将深入探讨TCP和UDP...
《TCP/IP三卷【第一部分:TCP/IP基础】》是一份详尽的网络通信协议教程,旨在帮助初学者深入理解TCP/IP协议栈的基础知识。TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议,它定义了...
在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。 二、TCP 和 UDP 的区别 TCP 等于和陌生人打电话处理事情,UDP 等于发广播。...
1. TCP/IP协议族概述:TCP/IP协议族是一个由多个不同协议组成的集合,这些协议规定了数据如何在网络中传输,以及设备间如何进行通信。它包括了传输控制协议(TCP),用户数据报协议(UDP),互联网协议(IP),地址...
在这一章中,我们将深入探讨TCP(传输控制协议)和UDP(用户数据报协议)这两种核心的传输层协议。 TCP是一种面向连接的协议,提供可靠的服务。在数据传输前,TCP需要建立连接,通过三次握手确保双方建立连接;而在...
《TCP/IP协议详解》第三卷主要探讨了TCP事务协议、HTTP、NNTP和UNIX域协议等核心网络协议,这些协议在网络通信中起着至关重要的作用。以下是对这些知识点的详细阐述: TCP(传输控制协议)是互联网协议族中最基础、...
第1章 概述 1 第2章 链路层 15 第3章 IP:网际协议 24 第4章 ARP:地址解析协议 38 第5章 RARP:逆地址解析协议 47 第6章 ICMP:Internet控制报文协议 50 第7章 Ping程序 61 第8章 Traceroute程序 71 第9章 IP选路 ...
在IT领域,网络通信是至关重要的组成部分,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种最常用的数据传输协议。本章将深入探讨这两种协议的工作原理、特点以及如何编写相应的数据包发送程序。 TCP(传输...