[network] TCP/IP 프로토콜 개념 정리.

2021. 11. 26. 17:40Network

728x90
728x90

TCP/IP 설명

  • 전송 조절 프로토콜인 TCP(전송 제어 프로토콜)와 인터넷 프로토콜인 IP(인터넷 프로토콜)로 이루어져 있는 프로토콜.
  • 인터넷 환경에서 정보 전송을 위해 쓰이는 프로토콜.
  • 인터넷에서는 데이터가 전송될 때, 패킷이라는 작은 단위(데이터 블록)로 나뉘어 전송됨.
  • TCP는 데이터의 추적/제어, IP는 데이터의 주소 지정/전달을 담당함.

TCP (Transmission Control Protocol) 설명

  • TCP는 OSI 네트워크 계층 모델  중 전송 계층에서 사용하는 프로토콜로 가상회선 방식으로 패킷을 교환함.
  • 장치들 사이에 연결과 데이터의 전송/제어 기능을 통해서, 데이터 전송의 신뢰성을 보장함.
  • 체크섬(check sum, 데이터의 손상 여부 점검) 필드에서 패킷 손실의 문제를 보장해줌.
  • point to point 연결 방식으로 전이중/양방향(Full-duplex)에서 데이터 전송이 가능.
  • 재전송/시간 제한 기법, 순서번호(syn)와 확인번호(ack)를 사용하여 패킷의 흐름/혼잡/순서 등을 제어함.

IP (Internet Protocol) 설명

  • IP는 OSI 네트워크 계층 모델  중 인터넷 계층에서 사용하는 프로토콜.
  • 호스트의 주소지정, 패킷 분할 및 조립 기능, 데이터 전달을 담당.
  • `신뢰성(에러제어)` 및 `흐름제어` 기능이 전혀 없음(신뢰성을 확보하려면 IP 계층 위의 TCP와 같은 상위 트랜스포트 계층에 의존)
  • 모든 상위 계층 프로토콜들(TCP,UDP,ICMP,IGMP 등)이 IP 데이타그램에 실려서 전송됨.

TCP/IP 계층 구조 설명

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

하드웨어 적인 요소를 담당한다. MAC 주소를 이용해 신뢰성 있는 전송을 보장한다. (OSI 7 계층에서 1,2 계층 역할.)

MAC 주소는 이더넷과 와이파이 같은 IEEE 802 정의 된 네트워크를 말함.

  • 2계층, 인터넷 계층(Internet Layer) :

IP가 있는 레이어로 IP 헤더(원천지, 목적지 정보)를 붙여서 패킷을 만들고 전송하는 역할을 한다. (OSI 7 계층에서 3계층 역할.)

  • 3계층, 전송 계층(Transport Layer) :

TCP가 있는 레이어로 두 지점의 신뢰성 있는 데이터 전송 역할을 한다. IP와 PORT를 이용해 프로세스와 통신한다. (OSI 7 계층에서 4계층 역할.)

포트를 통하여 Application 레이어가 TCP에게 데이터를 전송한다. 각각의 포트에 프로토콜을 지정할 수 있다.

예를 들어, HTTP는 80이라는 포트를 사용한다. 이로써, TCP는 어디에서 데이터가 오는지를 정확히 알 수 있다.

포트를 통해 받은 데이터들은 패킷이라는 작은 단위로 쪼개진다. 이 패킷들은 제각각 가장 빨리 전송될 수 있는 인터넷 루트를 찾아 떠난다.

각각의 패킷들은 TCP header에 어떤 순서로 재조합 할지에 관한 정보를 가진다.

  • 4계층, 응용 계층((Application Layer) :

응용프로그램들이 이용 할 수 있는 인터페이스를 제공한다. 대표 프로토콜로는 HTTP, FTP, SMTP 등이 있음. (OSI 7 계층에서 5,6,7계층 역할.)


OSI 7 계층 구조 설명

  • 1계층, 물리층(Physical Layer) :

전기적, 기계적인 물리적 연결을 담당함. 순수 데이터 전달 역할만 함.

  • 2계층, 데이터링크 계층(Data Link Layer) :

두 지점간의 신뢰성있는 전송을 보장. Mac주소(각 기기마다 가지고 있는 고유 주소)를 이용해 두 지점을 확인. Frame 이라는 데이터 단위를 사용함.

  • 3계층, 네트워크 계층(Network Layer) :

여러 지점을 거칠 때 경로를 찾아줌.(라우팅) IP Header가 여기서 붙음.

  • 4계층, 전송 계층 (Transport Layer) :

두 지점간의 신뢰성 있는 데이터를 주고 받게 해주는 역할. TCP헤더가 여기서 붙음.

  • 5계층, 세션 계층 (Session Layer) :

두 지점간의 프로세스 및 통신 상태를 관리하는 역할. 포트번호를 기반으로 통신 세션을 구성함.

  • 6계층, 표현 계층 (Presentation Layer) :

인코딩 및 데이터 형식의 차이를 조절함. (데이터 암호화 & 복호화, 데이터 변환 등이 이루어짐) 데이터를 어떻게 보여줄지를 처리 하는 계층.

  • 7계층, 응용 계층(Application Layer) :

우리가 사용하는 응용 서비스나 프로그램이 작동하는 계층.


TCP 패킷(세그먼트)의 구조


TCP flag(URG, ACK, PSH, RST, SYN, FIN) 설명

  • SYN( synchronization ) 연결 요청 플래그

세션을 성립할 때  가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용됨.

통신 시작 시 초기에 시퀀스 번호를 보내고 세션을 연결하기 위한 플래그


  • ACK( Acknowledgement ) 응답 플래그

받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냄.(일반적으로 +1 하여 보냄)

ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송함.

송신측 으로부터 패킷을 잘 받았다는 걸 알려주기 위한 플래그.


  • PSH( Push ) 넣기 플래그

대화형 트랙픽에 사용되는 것으로 버퍼가 채워지기를 기다리지 않고 데이터를 전달함.

버퍼링 없이 7 Layer Application Layer의 응용프로그램에게 메시지를 바로 전달하는 플래그.


  • FIN( Finish ) 연결 종료 플래그

더 이상 전송할 데이터가 없음을 의미함.

세션 연결을 종료시키겠다는 플래그.


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

비정상적인 세션을 끊기위해 연결을 재설정 하는 플래그


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

긴급한 데이터의 우선순위를 다른 데이터의 우선순위를 높여 긴급하게 전달하는 플래그

EX) ping 명령어 실행 도중 Ctrl+c 입력


TCP 3,4-handshake의 개념

  • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제함.

TCP 3,4-handshake 구조


TCP Connection (3-way handshake)

  1. 먼저 open()을 실행한 클라이언트가 SYN을 보내고 SYN_SENT 상태로 대기한다.
  2. 서버는 SYN_RCVD 상태로 바꾸고 SYN과 응답 ACK를 보낸다.
  3. SYN과 응답 ACK을 받은 클라이언트는 ESTABLISHED 상태로 변경하고 서버에게 응답 ACK를 보낸다.
  4. 응답 ACK를 받은 서버는 ESTABLISHED 상태로 변경한다.

TCP Disconnection (4-way handshake)

  1. 먼저 close()를 실행한 클라이언트가 FIN을 보내고 FIN_WAIT1 상태로 대기한다.
  2. 서버는 CLOSE_WAIT으로 바꾸고 응답 ACK를 전달한다. 동시에 해당 포트에 연결되어 있는 어플리케이션에게 close()를 요청한다.
  3. ACK를 받은 클라이언트는 상태를 FIN_WAIT2로 변경한다.
  4. close() 요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고 FIN을 클라이언트에 보내 LAST_ACK 상태로 바꾼다.
  5. FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고 TIME_WAIT으로 상태를 바꾼다. TIME_WAIT에서 일정 시간이 지나면 CLOSED된다. ACK를 받은 서버도 포트를 CLOSED로 닫는다.

TCP Socket Flow

728x90
728x90