unix网络编程---读书笔记(一)---tcp/udp/sctp简介

本文是《UNIX网络编程 卷一》的读书笔记,主要介绍了TCP、UDP和SCTP三种传输层协议。TCP是面向连接的、可靠的字节流协议,提供连接、可靠性、排序和流量控制。UDP是无连接、不可靠的数据报协议。SCTP结合了TCP和UDP的特点,提供可靠性、多宿主支持和消息边界。文章还详细讲解了TCP的三路握手、四路挥手,以及SCTP的四路握手过程。
摘要由CSDN通过智能技术生成

本博客为系列博客,主要记录 《UNIX网络编程 卷一》相关读书笔记;
此篇博客主要针对 第一部分 :简介和 TCP/IP

概略

进行网络编程,首先要确认网络通信协议(protocol);Unix网络编程主要关注基于传输层的TCP,UDP, SCTP协议。

以web服务器(基于TCP/IP协议族)为例 :

通常web网络应用有客户端(client)和服务器(server)构成,假定总是客户端向服务端主动发起请求(忽略服务器异步回调【asynchronous callback】通信);
web客户端与 服务器之间使用TCP(Transmission Controller Protocol,传输控制 协议)通信,TCP又转而使用TP(Internet Protocol,网际协议 )通信,最后IP再通过某种形式的数据链路层通信;

通信过程图解如下:

这里写图片描述

tcp协议是系统内核协议栈的一部分,web服务器作为用户进程 要想进行基于tcp的网络编程 ,需要操作tcp;sockets API 是应用层到传输层或者其他协议层的访问接口;
使用socket函数创建套接字(根据参数不同可以创建tcp套接字,udp套接字,sctp套接字),并返回套接字描述符;
每个用户进程都有一个描述符表,socket函数创建套接字实际上是分配一个socket数据结构存储空间,并向进程描述符表中 写入创建的套接字描述符与socket数据存储空间对应关系;
socket数据结构是指操作系统分配的对应该套接字的内核级缓冲区;系统内核会对该缓存区进行操作,如:使用tcp协议切分数据,或者解数据包等协议操作


tips:
1. web服务器是一个长时间运行的程序(即守护进程daemon),守护进程详解参见 : www.cnblogs.com/mickole/p/3188321.html
2. 客户和服务器通常是用户进程,而TCP和IP协议通常是内核中协议栈的一部分
3. 文件描述符详解参见 m.blog.csdn.net/article/details?id=38965239
4. Ubuntu下socket error详解参见 blog.csdn.net/u013011841/article/details/40414777

5. 相关代码参见 github.com/flybird1971/socketApi/tree/master/socket/intro

IOS模型

名词解释

  1. 双栈主机 : 表示同时支持IPv4和IPv6的主机
  2. 多宿主机(mulihomed host):具有多个IP层可见接口(扣除回馈接口)的主机。

UDP 用户数据报协议(User Datagram Protocol)

udp是一个简单,无连接,不可靠的数据报协议,

应用进程往一个udp套接字写入一个消息,该消息随后被封装(encapsulation)到一个udp数据报,然后udp数据报进而被封装到一个IP数据报,最后通过链路层发送到对端;

这里写图片描述

udp不保证udp数据报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值