lottie
Seungjun's blog
blog
TCP / IP 4 layer

TCP/IP (Transmission Control Protocol / Internet Protocol)

image


현재 수많은 프로그램들이 인터넷으로 통신하는데 있어 가장 기반이 되는 프로토콜로 실제 대다수 프로그램은 TCP와 IP로 통신하고 있다.


ARPANET이 개발된 이후 현재의 인터넷으로 발전해나가는 과정에서 대부분의 데이터 통신이 TCP와 IP기반으로 이루어졌기에 인터넷 프로토콜 그 자체를 표현하는 용어이기도 했고, 다양한 프로토콜이 개발된 현 시점에도 사실상 인터넷 프로토콜을 대표하는 용어로 사용중이다. 이를 이용해서 컴퓨터를 연결하는 체계를 이더넷(Ethernet)이라고 부른다.


보통 하나로 표현하긴 하나 TCP와 IP는 별개이다.

네트워크의 경우 계층이 정의되어 있고 각 계층마다 하는 역할과 책임지는 영역이 나뉘어져 있기 때문에 묶어서 표현한다는 것 뿐이지 역할에는 많은 차이가 있다.

  • TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않습니다.


1계층 네트워크 액세스 계층(Network Access Layer or Network Interface Layer)

OSI 7계층의 물리계층과 데이터 링크 계층에 해당한다.


물리적인 주소로 MAC을 사용한다.


LAN, 패킷망, 등에 사용된다.

2계층 인터넷 계층(Internet Layer)

OSI 7계층의 네트워크 계층에 해당한다.


통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능을 담당한다.


프로토콜 – IP, ARP, RARP

3계층 전송 계층(Transport Layer)

OSI 7계층의 전송 계층에 해당한다.


통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다.


프로토콜 – TCP, UDP

4계층 응용 계층(Application Layer)

OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당한다.


TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.


프로토콜 – FTP, HTTP, SSH

TCP Flag

우선 Flag란 무엇인가를 기억해야 하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에서 사용되는 미리 정의된 비트를 의미합니다.


이러한 Control Flag에 대한 필드들이 TCP 헤더에 6개가 존재하며 각각 1비트로 필드 내에 정의되어 있습니다. 이들을 이용하여 논리적인 TCP 연결회선 제어 및 데이터 관리를 하게 됩니다.



TCP Flag 종류

SYN (Synchronize) 연결 요청 플래그

  • TCP에서 세션을 성립할 때 가장 먼저 보내는 패킷입니다. 시퀀스 번호를 임의로 설정하여 세션을 연결하는데 사용되며 초기에 시퀀스 번호를 보내게 됩니다.

ACK (Acknowledgement) 응답 플래그

  • 상대방으로부터 패킷을 받았다는 것을 알려주는 패킷으로, 다른 Flag와 같이 출력되는 경우도 있습니다.

  • 송신 측에서 수신 측 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냅니다. (일반적으로 +1을 하여 보냅니다) ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송합니다.

FIN (Finish) 연결 종료 플래그

  • 세션 연결을 종료시킬 때 사용되며, 더이상 전송할 데이터가 없음을 나타냅니다.

RST (Reset) 연결 재설정 플래그

  • 재설정(Reset)을 하는 과정이며 양방향에서 동시에 일어나는 중단 작업입니다. 비정상적인 세션 연결 끊기에 해당합니다. 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용합니다.

PSH (Push) 넣기 플래그

  • 버퍼가 채워지기를 기다리지 않고 데이터를 받는 즉시 전달하는 Flag 입니다. 데이터는 버퍼링 없이 OSI 7 Layer Application Layer의 응용프로그램으로 바로 전달합니다.

URG (Urgent) 긴급 데이터 플래그

  • 긴급한 데이터의 우선순위를 다른 데이터의 우선순위보다 높여 긴급하게 데이터를 전달하는 Flag 입니다.