TCP/IP网络知识
1.TCP/IP概念
TCP/IP不是单指一种传输协议,而是一组传输控制协议/互联网协议。
2.TCP/IP分层
(计算机网络中,实际应用的网络协议是TCP/IP协议族,TCP/IP的应用层大体上对应着OSl/RM模型的应用层、表示层和会话层,TCP/IP的网络接口层对应着OSI/RM的数据链路层和物理层,而传输层和网络层在两个模型中对应得很好。)
其分层关系如下图
3.TCP/IP特性
面向连接的,可靠的,基于字节流的传输层通信协议;
网络地址统一分配,网络中每一设备和终端都具有一个唯一地址;
TCP/IP不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准等。
4.TCP三次握手和四次挥手
TCP报文段首部包含:
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号
确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号
确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效
同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0
终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接
TCP三次握手:
1.客户端向客户端发出请求报文段。(SYN=1,seq=x)
2.服务端若同意客户端的请求,则发回确认报文。(SYN=1,ACK=1,ack=x+1,seq=y)
3.客户端收到确认报文之后,通知上层应用进程连接已建立,并向服务器发出确认报文,其首部:ACK=1,ack=y+1。当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立。(ACK=1,ack=y+1)
TCP四次挥手:
1.数据传输结束以后,客户端的应用进程发出连接释放报文段,并停止发送数据。(FIN=1,seq=u)
2.服务器端收到连接释放报文段之后,发出确认报文。(ack=u+1,seq=v)
3.若服务器已经没有要向客户端发送的数据,其应用进程就通知服务器释放TCP连接。(FIN=1,ACK=1,seq=w,ack=u+1)
4.客户端收到连接释放报文段之后,必须发出确认释放请求,然后TCP连接才真正结束。(ACK=1,seq=u+1,ack=w+1)
5.UDP特点及报文结构
特点:
面向非连接,不维护连接状态,可以同时向多个客户端传输相同的消息
数据包报头只有8个字节,额外开销小
吞吐量只受限于数据生成速率,传输速率以及机器性能等
报文结构:
6.HTTP协议
简介:
HTTP协议是应用层的超文本传输协议,是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
特点:
支持客户/服务器模式
简单快速且灵活
无连接(无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间)
无状态
消息结构:
客户端请求消息:(包含请求行,请求头部,空行,请求数据)
服务端响应消息:(包含状态行,消息报头,空行,响应正文)
更多相关知识可以查看上一篇博客:https://www.cnblogs.com/ywb-articles/p/10633270.html
TCP/IP网络知识的更多相关文章
- TCP/IP网络基础知识
TCP/IP是一组用于实现网络互联的通信协议,通常称为TCP/IP协议族.包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等. 一.TCP/IP模型将协议分为 ...
- TCP/IP基础知识
TCP/IP基础知识 网络 TCP/IP 引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- TCP/IP协议知识科普
简介 本文主要介绍了工作中常用的TCP/IP对应协议栈相关基础知识,科普文. 本博客所有文章:http://www.cnblogs.com/xuanku/p/index.html TCP/IP网络协议 ...
- Linux学习(1)- TCP/IP网络协议基础
Linux学习(1)- TCP/IP网络协议基础 一.TCP/IP 简介 学习内容 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输 ...
- 《TCP/IP网络编程》
<TCP/IP网络编程> 基本信息 作者: (韩)尹圣雨 译者: 金国哲 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115358851 上架时间:2014-6- ...
- TCP/IP网络编程之多进程服务端(二)
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...
- 第二章 TCP/IP 基础知识
第二章 TCP/IP 基础知识 TCP/IP transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ...
- 对TCP/IP网络协议的深入浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
随机推荐
- monkey 查找闪退页面的方法
使用了命令 adb shell monkey --pct-touch 100 -v -p com.iBer.iBerAppV2 5000 >/Users/kaibinliu/Desktop ...
- Linux命令行如何返回上一次的目录
千辛万苦进入了一个很深层的目录,一不小心输入了cd并回车 ......... 并不是再进一次,对于bash来说,只需要很管理的一个命令: cd - 该命令等同于cd $OLDPWD,关于这一点在bas ...
- 改进后的socket轮子,欢迎挑战
运行环境.net core2.1 下载地址
- Centos安装openjdk
转载自:https://blog.csdn.net/youzhouliu/article/details/51183115 openjdk在linux各个平台下安装源中可以找到. 命令查找安装源中有什 ...
- SLC cache功能
由于TLC需要多次编程,且未全部编程时wordLine处于不稳定状态,所以一般都会划出一部分区域作为SLC cache使用 SLC cache主要功能是,SSD接收到写命令后,先将数据写入SLC ca ...
- 【18.065】Lecture1
由于这一课的教材放出来了,所以直接将整个pdf放上来.   
- DOTS概述
Unity数据导向技术栈有三个主要部分:Unity实体 - 组件 - 系统(ECS),Unity C#作业系统和Unity Burst编译器. 实体 - 组件 - 系统概述 ECS提供了一种游戏设计方 ...
- 如何禁止谷歌浏览器隐藏url的www前缀
若要将Chrome浏览器的设置恢复为隐藏HTTP.HTTPS以及WWW前缀,则只需再次进入此页面: chrome://flags/#omnibox-ui-hide-steady-state-url-s ...
- Maven跳过单元测试的两种方式
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...
- lua的table库中的常用函数总结
table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: (1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; (2).table 的默认初始索引一般 ...