`
lobin
  • 浏览: 417389 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

网络协议 第1篇: TCP & UDP

 
阅读更多
写道
DOD STANDARD TRANSMISSION CONTROL PROTOCOL
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



 

 

 

  • 大小: 5.9 KB
  • 大小: 3.2 KB
分享到:
评论

相关推荐

    TCP&UDP Debuger_tcp_

    TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是网络通信中的两种主要传输协议,它们在互联网应用中扮演着至关重要的角色。TCP 和 UDP 都是位于 OSI 模型的第四层——传输层,但它们在连接...

    西北工业大学软件学院网络与分布计算lab1_Socket.zip

    在本实验中,我们主要关注的是“网络与分布计算”的第一部分——Lab1_Socket,这是西北工业大学软件学院的一个教学项目。这个实验的核心是利用Java编程语言实现基于TCP(传输控制协议)和UDP(用户数据报协议)的...

    TCPIP协议详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    第一部分TCP事务协议 PDF完美版,目录大纲可跳转 第1章T/TCP 概述 1.1 概述 本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最 简单的情形。接着我们编写使用T C P的客户和服务器...

    TCPIP协议详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    第一部分 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协议

    在计算机网络通信中,传输控制协议(TCP)与用户数据报协议(UDP)是最为常见的两种传输层协议,它们位于OSI七层模型中的第四层——传输层,同时也属于TCP/IP协议族的一部分。这两种协议在实际应用中各有特点和适用...

    网络总结(TCP和UDP).pdf

    在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是最基础且应用广泛的两种协议。在进行网络编程和相关技术研究时,理解这两种协议的工作原理和特性,对于设计稳定可靠的通信系统至关重要。下面将对TCP...

    TCP协议与UDP协议的区别

    ### TCP协议与UDP协议的区别 #### 一、TCP/IP协议栈概述 为了更好地理解TCP协议与UDP协议之间的区别,我们先来简要回顾一下TCP/IP协议栈的基本结构。TCP/IP协议栈是一个分层的网络通信模型,主要包括四个层次: 1...

    传输层概念 TCP协议 UDP协议 TCP与UDP的区别

    传输层是计算机网络中的一个重要层次,在OSI七层模型中处于第四层,其主要作用是在源和目的端之间提供端到端的可靠通信。传输层协议能够识别主机中的不同应用程序,并确保数据能够准确地交付给正确的应用程序进程。...

    欧姆龙以太网通讯TCP/UDP例子及欧姆龙PLC程序例子说明

    本篇文章将详细讲解欧姆龙以太网通讯中TCP/UDP协议的应用及其PLC程序实例。 一、欧姆龙以太网通讯概述 欧姆龙的以太网通讯技术允许PLC与各种设备通过TCP/IP协议进行数据交换,这在现代自动化系统中极为重要。TCP...

    TCP/IP协议以及TCP与UDP协议区别

    ### TCP/IP协议以及TCP与UDP协议区别 #### 一、TCP/IP协议概述 TCP/IP(Transmission Control Protocol/Internet Protocol)是一组用于实现网络互连的通信协议,它定义了电子设备(例如计算机)如何在网络中交换...

    TCP和UDP数据包发送程序

    在IT领域,网络通信是核心部分之一,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种主要的传输层协议。本程序旨在帮助理解这两种协议的工作原理,并能够实际发送TCP和UDP数据包。下面我们将深入探讨TCP和UDP...

    TCP/IP三卷【第一部分:TCP/IP基础】

    《TCP/IP三卷【第一部分:TCP/IP基础】》是一份详尽的网络通信协议教程,旨在帮助初学者深入理解TCP/IP协议栈的基础知识。TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的核心协议,它定义了...

    TCP,UDP,Socket,Http网络编程面试题 47道.pdf

    在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。 二、TCP 和 UDP 的区别 TCP 等于和陌生人打电话处理事情,UDP 等于发广播。...

    计算机网络课件:第08章 TCPUDP协议.ppt

    在这一章中,我们将深入探讨TCP(传输控制协议)和UDP(用户数据报协议)这两种核心的传输层协议。 TCP是一种面向连接的协议,提供可靠的服务。在数据传输前,TCP需要建立连接,通过三次握手确保双方建立连接;而在...

    tcp-ip协议详解 卷3:TCP事务协议,HTTP,NNTP和UNIX域协议.rar

    《TCP/IP协议详解》第三卷主要探讨了TCP事务协议、HTTP、NNTP和UNIX域协议等核心网络协议,这些协议在网络通信中起着至关重要的作用。以下是对这些知识点的详细阐述: TCP(传输控制协议)是互联网协议族中最基础、...

    《TCP/IP详解,卷1:协议》

    第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选路 ...

    第8章 TCP和UDP数据包发送程序

    在IT领域,网络通信是至关重要的组成部分,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种最常用的数据传输协议。本章将深入探讨这两种协议的工作原理、特点以及如何编写相应的数据包发送程序。 TCP(传输...

    TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

    第一部分 TCP事务协议 第1章 T/TCP概述 1.1 概述 1.2 UDP上的客户-服务器 1.3 TCP上的客户-服务器 1.4 T/TCP上的客户-服务器 1.5 测试网络 1.6 时间测量程序 1.7 应用 1.8 历史 1.9 实现 1.10 小结 第2章 T/TCP协议...

Global site tag (gtag.js) - Google Analytics