SOCK开发之---TCP/IP简介
在开发通信程序之前,都要先确定这些程序相互通信所使用的协议(protocol),在深入设计前,我们都需要先从高层次来判断通信由哪个程序发起以及相应在何时产生。
举例来说,一般认为web服务器是一个长时间运行的程序(即守护程序,daemon),它只响应来自网络的请求时才发送网络消息。大多数网络应用都是划分成客户端(client)和服务器(server)来组织的。往往是客户端发起请求,但也有复杂网络中需求异步回调(asynchronous callback)通信,也就是服务器向客户端发起请求。
TCP/IP的焦点是协议簇:

当前通用的IP协议,泛指IPv4,当然,现在也必须要考虑IPv6的情况,渐渐的以后IPv6将会取代IPv4的存在,这点在设计时需要加以注意。
强调:协议无关性!
比如在我们设计时,需要使用SOCK地址类型结构,比如当我们需要使用基于IPv4的通信时,会建立结构SOCKADDR_IN,但当我们使用IPv6时,建立结构SOCKADDR_IN6。所以在提供上层应用时,应该尽量避免结构的选择,因为这样很麻烦,最好做成协议无关性,无论IPv4还是IPv6都使用相同的结构,并根据类型值来进行区分。
强调:错误处理!
任何程序都强调对函数的返回检查,比如socket常用函数socket、inet_pton、connect、read和fputs等。有时候往往异常处理并非简单的程序停止,而是做进一步的判断,比如检查系统调用是否被中断了。
既然是必要操作,我们就尽量使用包裹函数,把socket函数处理及异常处理通过大写的名字Socket或其他什么的来代替,使程序更高效。
传输层包括TCP、UDP和SCTP:

TCP的三次握手:

1. 被动打开(passive open):socket、bind、listen;
2. 主动打开(active open):connect;这导致客户端发送一个SYN(同步)分节,它告诉服务器客户将在(待建立)的连接中发送的数据的初始序列号;
3. 服务器必须确定(ACK)客户端的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的确认;
4. 客户端必须确认服务器的SYN;
SOCK开发之---TCP/IP简介的更多相关文章
- TCP/IP笔记(二)TCP/IP简介
上回,主要介绍了下协议和OSI参考模型,并简单了解下网络构成要素,这回该说说TCP/IP了 互联网与TCP/IP的关系 互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发 ...
- 服务器开发基础-Tcp/Ip网络模型—完成端口(Completion Port)模型
本文对于初学网络编程的极为友好,文中所有代码全部基于C语言实现,文中见解仅限于作者对于完成端口的初步认识,由于作者才疏学浅,出现的错误和纰漏,麻烦您一定要指出来,咱们共同进步.谢谢!!! 完成端口(c ...
- TCP/IP简介
TCP/IP协议分层 提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同.如图所示 TCP/IP协议族按照层次由上到下,层层包装.最上面的就是应用层 ...
- UNIX网络编程——TCP/IP简介
一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...
- 五十三 网络编程 TCP/IP简介
虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的 ...
- TCP/IP 简介
1: 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议. TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / In ...
- CCNA第二章TCP/IP简介考试要点学习笔记
1.描述网络是如何工作的 DoD过程/应用层 -- OSI应用.表示和会话层(定义了结点到结点的应用通信协议以及对用户界面规范的控制): DoD主机到主机层 -- OSI传输层(保证了数据包的 ...
- CCNA 第三章 TCP/IP简介
1:DoD模型和OSI模型 2:TCP和UDP的重要特性 3:IP编址: (1):A类地址: 第一字节第一位必须为0,即:0xxxxxxx,取值范围:00000000-011111111:0-127, ...
- 网络通信实验(2)TCP/IP LWIP 简介
TCP/IP 简介 TCP/IP 中文名为传输控制协议/因特网互联协议,又名网络通讯协议,是 Internet 最基本的协议. Internet 国际互联网络的基础,由网络层的 IP 协议和传输层的 ...
随机推荐
- Linux虚拟机与Windows共享文件
1.找到“虚拟机” >>> “设置” 2.选项 >>> 共享文件夹 >>> 总是启用 >>> 添加,选择你想要共享的文件. 注 ...
- linux中强大的screen命令
今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“多个桌面”的功能. 平常开一个putty远程登录,经常需要在两个程 ...
- nginx.conf_2017-11-24
user webroot; worker_processes 4; worker_cpu_affinity 1000 0100 0010 0001; worker_rlimit_nofile 6550 ...
- leetcode 几何题 位运算 面试编程
[BZOJ][CQOI2014]数三角形 Description给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input ...
- Django学习---jsonp跨域请求
jsonp跨域请求 我们通过ajax进行跨域请求的时候,请求发送过去,但是在接受返回数据的时候浏览器会进行拦截. 这是由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源 ...
- 517. Super Washing Machines
▶ 超级洗碗机.给定一个有 n 元素的整数数组,我们把 “将指定位置上元素的值减 1,同时其左侧或者右侧相邻元素的值加 1” 称为一次操作,每个回合内,可以选定任意 1 至 n 个位置进行独立的操作, ...
- 利用Nginx rewrite规则实现域名显性转发
体验更优排版请移步原文:http://blog.kwin.wang/website/nginx-rewrite-realize-domain-forward.html 自己的blog域名最开始用的vb ...
- 基础 ByteBuffer 和 ByteBuf
缓冲区 ByteBuffer buffer = ByteBuffer.allocate(); ByteBuf https://www.jianshu.com/p/3fbf54b8e8ec
- Windows和Linux双系统下完美卸载linux
装了Windows和linux双系统的朋友,在后期要删除linux是个比较头痛的问题,因为MBR已经被linux接管,本文的目的是如何在windows 和linux双系统下,简单,完美地卸载linux ...
- LUA ipairs遍历的问题
t = { 1, 2, 3, nil, 4,} for k, v in ipairs(t) doprint(k, v)end print("------------------------- ...