본문 바로가기
  • [성공하는 개발자] - Developer
기타

네트워크 기본(TCP/IP)

by Sein-JH 2021. 7. 5.
728x90

1. TCP/IP란 무엇인가에 대해서 알아보자.

 1) TCP/IP란?

TCP/IP는 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜

프로토콜에는 케이블 규격이랑 IP 주소 지정 방법, 떨어진 상대를 찾기 위한 방법과 그 곳에 도달하는 순서, 그리고 웹을 표시하기 위한 순서 등 여러가지가 있습니다. 이렇게 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부릅니다.

 

TCP/IP

 인터넷 프로토콜 스위트(영어: Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.

- 출처 : 위키백과 -


2) 패킷
(Packet)의 정의

 패킷(paket) : wekipidia에는 이렇게 나와있습니다. 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 즉, 컴퓨터 네트워크에서 데이터를 주고받을 때 정해 놓은 규칙이다.

 

조금 더 쉽게 정리해보면

 

 패킷은 pack과 bucket의 합친 말인데요~ 우체국에서는 화물을 적당한 덩어리로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이러한 방식을 데이터 통신에 접목한 것이다.

즉, 정보를 보낼 때 특정 형태를 맞추어 보낸 다는 것입니다. 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해서 전송되는 데이터 조각이라고 생각하면 편하다.

 

3) 프로토콜 종류

 

2. 계층 구조

 1) OSI 7계층

 일반적인 네트워크를 포괄하는 네트워크 모델로, 수행 기능에 따라 물리 계층(1계층), 데이터 링크 계층(2계층), 네트워크 계층(3계층), 전송 계층(4계층), 세션 계층(5계층), 표현 계층(6계층), 응용프로그램 계층(7계층)으로 나뉜다.

 

계층별 구조

L7 응용프로그램 계층 (Application)

    :  User Interface 를 제공하는 계층 (구글 크롬, 카카오톡 등)

 

L6 표현 계층 (Presentation)

    : 데이터의 변환 작업을 하는 계층 (인코딩, 디코딩, 암호화, 코드 변환 등)

 

L5 세션 계층 (Session)

    : 응용 프로그램 간의 연결을 지원해주는 계층(SSH, TLS 등)

 

L4 전송 계층 (Transport)

    : 계층은 서비스를 구분하고 데이터 통신방식을 결정 (TCP/UDP)

장비(게이트웨이)

 

L3 네트워크 계층 (Network)

    : 논리적 주소를 기반으로 전송경로를 결정 ( IP, IPX, Apple-talk 등) 

장비(Router, L3-Switch)

 

L2 데이터 링크 계층 (Date link)

    : WAN에서 인접한 노드끼리 또는 같은 LAN 상의 노드 끼리 연결하여 데이트를 전달(MAC)

장비(브리지,스위치)

 

L1 물리 계층 (Physical)

    : 전기적 신호를 사용하여 뎉이트를 전송 (Cable , Cable Connector)

장비(허브, 케이블)

 

Transport Layer(4 Layer)
 송신자와 수신자의 논리적 연결(Connection)을 담당하는 부분으로, 신뢰성 있는 연결을 유지할 수 있도록 도와줍니다. 즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는지 얼마나 받았는지, 제대로 받았는지 등을 확인합니다. TCP와 UDP가 대표적입니다.
 
Network Layer(3 Layer)
 IP(Internet Protocol)이 활용되는 부분으로, 한 Endpoint가 다른 Endpoint로 가고자 할 경우, 경로와 목적지를 찾아줍니다. 이를 Routing이라고 하며 대역이 다른 IP들이 목적지를 향해 제대로 찾아갈 수 있도록 돕는 역할을 합니다.

출처: OSI 7 Layer 쉽게 이해하기

 [네트워크 엔지니어 환영의 AWS 기술블로그]

 

2) TCP/IP 계층 구조

TCP/IP 4계층으로 구성되어 있다.

  TCP/IP 프로토콜을 사용하는데 초점을 맞추고 있으며, 네트워크 엑세스 계층(1계층), 인터넷 계층(2계층), 전송 계층(3계층), 응용 계층(4계층)으로 나뉜다.

 

 

  • 애플리케이션 계층(Application Layer)

애플리케이션 계층은 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정하고 있습니다.
TCP/IP에는 여러 가지의 공통 애플리케이션이 있습니다. 예를 들면, FTP와 DNS 등도 애플리케이션의 한 가지 입니다. HTTP도 이 계층에 포함됩니다.

 

  • 트랜스포트 계층(Transport Layer)

트랜스포트 계층은 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공합니다. 트랜스포트 계층에서는 서로 다른 성질을 가진 TCP(Transmission Control Protocol)와 UDP(User Data Protocol) 두 가지 프로토콜이 있습니다.

 

  • 네트워크 계층(혹은 인터넷 계층)

 네트워크 계층은 네트워크 상에서 패킷의 이동을 다룹니다. 패킷이란 전송하는 데이터의 최소 단위입니다. 이 계층에서는 어떠한 경로를 거쳐 상대의 컴퓨터까지 패킷을 보낼지를 결정하기도 합니다.
인터넷의 경우라면 상대 컴퓨터에 도달하는 동안에 여러 대의 컴퓨터와 네트워크 기기를 거쳐 상대에게 배송됩니다. 그러한 여러 가지 선택지 중에서 하나의 길을 결정하는 것이 네트워크 계층의 역할입니다.

 

  • 링크 계층(혹은 데이터 링크 계층, 네트워크 인터페이스 계층)

 네트워크에 접속하는 하드웨어적인 면을 다룹니다. 하드웨어적 측면은 모두 링크 계층의 역할입니다

 

 

TCP/IP로 통신할 때 계층을 순서대로 거쳐 상대와 통신 합니다. 송신하는 측은 애플리케이션 계층에서부터 내려가고, 수신하는 측은 네트워크 계층부터 올라간다.

 

HTTP 예)

 

1. 송신측 클라이언트의 애플리케이션 계층(HTTP)에서 어느 웹 페이지를 보고 싶다라는 HTTP 리퀘스트를 지시한다.

2. 그 다음에 있는 트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메시지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다

3. 네트워크 계층(IP)에서는 수신지 MAC 주소를 추가해서 링크 계층에 전달합니다. 이로써 네트워크를 통해 송신할 준비가 되었다.

4. 수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 애플리케이션 계층까지 도달한다.

5. 수신측 애플리케이션 계층에 도달하게 되면 클라이언트가 발신했던 HTTP 리퀘스트를 수신할 수 있다.

 

 

 

위 그림을 자세히 보면 송신할 때는 각 계층을 거칠 때마다 헤더에 필요한 정보가 추가되고, 수신할 때는 해해당 계층마다 사용한 헤더를 삭제합니다. 이렇게 정보를 감싸는 것을 캡슐화라고 합니다.

 

3. Internet Protoccol (IP)

1) IP 기본 정보

  • OSI7 Layer의 3계층에 해당하는 프로토콜
  • TCP/IP에서 전송을 담당하는 프로토콜
  • 신뢰성이 없고 비 연결 지향적이다.
  • IP주소에 따라 네트워크간 전송 경로를 제어한다.
  • IP의 Version은 IPv4와 IPv6가 존재
  • Router
    • 네트워크 프로토콜의 주소에 따라 네트워크간 전송 경로르 제어한다.
    • 라우팅 알고리즘에 의해 최적의 경로를 배정함
    • Broadcast Domain을 분리시킨다.

2) IP Header (Layer 3)

IP Header Field

  • Version : IP Protocol Version 정보(IPv4, IPv6)
  • IHL(Internet Header Length) : IP Header의 길이를 32bit단위로 표시
  • TOS(Type of Service): Internet의 Application, Host, Router의 우선순위 서비스를 제공
  • Total Length: IP Packet의 전체 길이를 바이트 단위로 표시
  • Identification: IP Packet을 구분하기 위한 번호. IP Packet이 Fragmentation되었을 경우 목적지에서 결합을 위해 사용한다.
  • IP Flags: IP Packet의 Fragmentation 정보를 표시
  • Fragmentation Offset: Fragmentation되어진 IP Packet의 시작 위치를 표시
  • TTL(Time-to-Live): IP Packet이 이동할 수 있는 최대 라우터의 개수
  • Protocol: IP Data에 포함되어 있는 Next-Header를 표시
  • Source IP Address: IP Packet 을 전달한 출발지 시스템의  IP 주소
  • Destination IP Address: IP Packet을 수신할 목적지 시스템의 IP 주소
  • Option: 특별한 처리 옵션을 정의
  • Padding: Option이 추가되는 경우 32bit단위로 끝날 수 있도록 추가되는 부분

 

4. Transmission Control Protocol (TCP)

1) TCP 기본 정보

  • 연결지향 형 프로토콜
    • 출발지와 목적지간의 연결 설정과정을 통해 연결을 맺은 후 데이터를 전송한다(Three-way Handshake)
  • 데이터의 신뢰성을 제공
    • Sequence Number를 사용하여 데이터를 전달하고 전달할 데이터의 확인을 Acknowledge Number로 확인한다. 만약 전달한 데이터에 문제가 발생했을 경우 전송을 시도한다.
  • 흐름제어
    • TCP Header의 Window 필드를 사용하여 해당 시스템의 buffer 크기를 송신 시스템(또는 수신시스템)에게 알려준다.
  • 오류제어
    • Checksum값을 이용

 

2) TCP Header (Layer 3)

TCP Header Field

  • Source Port: 출발지 Port 번호
  • Destination Port: 목적지 Port 번호
  • Sequence Number: 스트림을 유지하기 위한 순차번호
    • syn flag가 1인 경우 초기 순서번호를 의미
    • syn flag가 0인 경우 segment의 순서번호를 의미
  • Acknowledge Number: 응답 번호
  • Offset: TCP Header의 크기 (기본 20byte)
  • TCP Flags: TCP Segment의 목적을 의미
    • URG: 긴급 데이터 Urgent 항복의 값이 유효함
    • ACK: 응답 Segment임을 표시. Acknowledge Number가 유효함
    • PSH: 해당 Segment의 데이터를 Application 계층으로 즉시 전달해야 함
    • RST: 연결을 재 설정, 또는 유효하지 않는 Segment를 받았을 경우 응답으로 전달
    • SYN: 연결 요청
    • FIN: 연결 종료
  • Window: 수신측이 받을 수 있는 buffer의 크기
  • Checksum: TCP Header를 포함한 Segment전체의 오류 검사를 위해 사용
  • Urgent Pointer: 긴급한 처리해야 할 데이터의 마지막 바이트
  • Option: 최대 40byet (32bit단위로 처리해야 하므로 길이가 안 맞는 경우 Padding)

 

3)쓰리웨이 핸드쉐이킹(Three-way Handshaking)

  TCP는 데이터를 상대방에게 확실하게 보내기 위해서 쓰리웨이 핸드쉐이킹이라는 방법을 사용하고 있다. 이 방법은 패킷을 보내고 잘 보내졌는지 여부를 상대에게 확인하러 간다 여기에서 'SYN'와 'ACK'라는 TCP 플래그를 사용한다. 그림을 보면서 알아보자.

 

 

1. 송신측에서 최초 'SYN' 플래그로 상대에게 접속함과 동시에 패킷을 보냅니다.

 

2. 수신측에서는 'SYN/ACK' 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전합니다.

 

3. 마지막으로 송신측이 'ACK' 플래그를 보내 패킷 교환이 완료되었음을 전합니다.

 

 

 

4. User Datagram Protocol (UDP)

1) UDP 기본 정보

  • IP를 기반으로 데이터를 전송
  • 데이터 전달을 보장 받지 못함(신뢰성이 없음)
  • 연결 설정 및 연결 종료 과정이 존재하지 않음
  • 연결 상태가 존재하지 않음
  • 속도가 TCP보다 빠르다

2) UDP Header (Layer 3)

UDP Header Field

  • Source Port : 출발지 Port 번호
  • Destination Port: 목적지 Port  번호
  • Length: UDP Header를 포함한 UDP Segment의 전체 크기
  • Checksum: UDP Header를 포함한 UDP Segment 전체의 오류 검사

 

참고)

https://velog.io/@conatuseus/2019-09-10-2009-작성됨-xsk0ds2eqf

https://vsh123.github.io/network/3-way-handshake/

 

댓글