TCP/IP 란?

오호·2021년 4월 24일
2

네트워크

목록 보기
3/13
post-thumbnail

1. TCP/IP 란 무엇일까?

컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신해야만 한다.

어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하고, 어떻게 이야기를 종료할까와 같은 규칙을 정해야한다.

이런 규칙을 바로 프로토콜이라고 부른다.

HTTP, 인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라고 불리는 프로토콜위에서 동작하고 있다.

간단히 말하자면, 어떤 프로그램이 TCP/IP를 지원한다는 것은 인터넷을 연결하여 사용할 수 있다는 말을 의미합니다.

TCP는 Transmission Control Protocol의 약자로, 서버와 클라이언트간 데이터 전송의 신뢰성을 보장하는 역할을 담당합니다.
데이터는 네트워크선로를 통해 전달되는 과정 속에서 손실되거나 순서가 뒤바뀌어 전송될 수 있는데 TCP는 이런 손실을 검색하고 교정하여 순서를 재조합 할 수 있도록 도와줍니다.

1.1 TCP/IP의 계층구조

만약 인터넷이 하나의 프로토콜로 되어있다면 사양이 변했을 때 전체를 바꿔야하지만 계층화되어 있으면 사양이 변경된 해당계층만 바꾸면 된다.
TCP/IP는 'Application Layer', 'Transport Layer', 'Network Layer', 'Datalink Layer' 총 4개의 계층으로 나뉘어져있다.
TCP/IP의 계층에 대해서 알아보기전에 OSI 7계층 에 대한 지식이 선행되어야한다. 알아봅시다..⭐️

1.2 OSI 7 계층

OSI 는 각종 시스템간의 연결을 위하여 ISO 에서 제안한 모델로 Open System Interconnection Reference Model이라는 단어처럼 시스템에 상관없이 서로의 시스템이 연결될수 있도록 만들어주는 모델입니다. 다음 이미지는 OSI 7계층의 이미지입니다. 1.1에서 설명한 TCP/IP의 계층과 유사한 이름들을 가지고 있는 것을 확인할 수 있습니다.
OSI7계층
⬆️ 이미지 출처
컴퓨터와 컴퓨터는 데이터 통신을 할 때 위의 계층을 거치면서 데이터를 전송합니다. 복잡해보이는 이런 과정을 통해 통신을 하는 이유는 위에서도 말했듯이 관리가 쉽기 때문입니당🧐

필자같은 프론트엔드 개발자나 서비스 개발자들은 보통 Application Layer만 신경써서 만들면되지만 반대로 하드웨어 개발자들은 Physical Layer만 신경쓰면됩니다.

이런식으로 계층을 캡슐화하여 관리하면 개발 및 관리에 매우 효율적이라고 합니다.

2. TCP/IP 4 계층

OSI 7계층과 계층의 이름이 비슷했던 이유는 OSI 계층을 간략화한 것이기 때문입니다.
osi vs tcp/ip
⬆️ 이미지 출처
TCP/IP의 계층에 대해 자세하게 설명하기 전에 TCP/IP는 현재 인터넷에서 사용하는 프로토콜 그룹(여러 계층에서 조직된 프로토콜 집합)임을 다시 한번 떠올려 보자.

2.1 Application Layer

  • application layer는 사용자에게 서비스를 제공하기 위해 프로세스 간 통신을 책임지고 있다.
  • 사용자 인터페이스를 제공한다.
  • 서비스
    a. WWW 에 접속하기 위한 수단인 HTTP
    b. 전자우편 서비스에 사용되는 SMTP
    c. 파일 전송 프로토콜인 FTP
    d. 사이트에 원격으로 접속하기 위해 사용되는 TELNET, SSH
    e. 지역 레벨의 인터넷을 관리하기 위해 사용되는 SNMP
    f. 네트워크층 주소를 찾기 위해 사용되는 DNS

2.2 Transport Layer

  • 전체 메시지가 완전하게 바른 순서로 도착하는 것을 보장합니다.

  • 프로토콜 종류

    1. TCP(Trasmission Control Protocol) : 연결지향 프로토콜로, 연결지향은 데이터 송신측과 데이터 수신측에서 전용의 데이터 전송 길을 만든다는 의미입니다.

      • 흐름 제어(목적지가 전송되는 데이터의 양을 감당할 수 없는 경우를 방지하기 위해 발신지 호스트의 데이터 송신율과 목적지 호스트의 데이터 수신율을 맞춤)
      • 오류 제어(오류 없이 목적지에 세그먼트들이 도달하고 훼손된 세그먼트들의 재전송을 보장하기 위해)
      • 혼잡 제어(네트워크 혼잡으로 인한 세그먼트들의 손실을 줄이기 위해 사용)
      • 확실하게 데이터를 보내기 위해서 TCP는 쓰리웨이 핸드셰이킹이라는 방법을 사용한다. 송신측에서는 최초 SYN 플래그로 상대에게 패킷을 보내고 수신측에서는 SYN/ACK 플래그로 패킷을 수신한 사실을 알린다. 마지막으로 송신측이 ACK 플래그를 보내 패킷 교환이 완료되었음을 전한다.

      https://github.com/cjy0019/TIL/raw/master/images/syn.png?raw=true

    2. UDP(User Datagram Protocol) : 비연결형 프로토콜

      • 연결을 설정하지 않고 사용자 데이터그램들을 전송하는 비연결형 프로토콜이고 흐름 제어, 오류 제어, 혼잡 제어를 제공하지 않는 간단한 프로토콜이다. 즉, 데이터를 받거나 송신하는데만 사용된다.

2.3 Internet Layer

  • Internet Layer는 발신지 컴퓨터와 목적지 컴퓨터 사이의 연결을 생성하기 위한 책임을 가집니다.
  • 프로토콜 종류
    1. 인터넷 프로토콜(IP, Internet Protocol) : 패킷을 상대방에게 전달하는 역할을 한다. IP주소는 각 노드에 부여된 주소를 가리키고 MAC 주소는 각 네트워크 카드에 할당된 고유의 주소이다.
    2. 보조 프로토콜 ICMP(인터넷 제어 메시지 프로토콜), IGMP, DHCP
  • 기능
    • 라우팅 : 패킷이 최종 목적지에 전달될 수 있도록 경로를 지정함

2.4 Physical Layer

  • 기능
    1. 데이터그램을 받아서 프레임이라고 하는 패킷으로 캡슐화함.
    2. 물리주소 지정 : 송신자와 수신자의 물리 주소를 헤더에 추가함.
    3. 흐름 제어
    4. 오류 제어
    5. 접근 제어

3. TCP / IP 통신 흐름

지금까지 TCP/IP의 계층에 대해 자세하게 살펴보았다. 하지만 어떤 과정을 거쳐 통신이 진행되는지 아는게 가장 중요하다. 알아보자 📌
흐름
이미지 출처 ⬆️
위 이미지처럼 각각의 계층을 거쳐 송신측과 수신측의 통신이 완성됨을 알 수 있다.
각각의 계층을 지날때마다 헤더에 각각의 계층에서 필요한 정보를 담아 전송한다. 이렇게 정보를 감싸서 보내는 것을 캡슐화라고 부른다.
반대로 수신측에서는 헤더를 하나씩 삭제하는데 이는 역캡슐화라고 부른다.

3.1 통신 예시

🕶 가장 많이 사용되는 HTTP 프로토콜을 예로 들어보자 🕶

  1. 클라이언트의 Application Layer에서 http://www.naver.com이라는 페이지를 요청한다는 HTTP리퀘스트를 보낸다.

  2. 그러면 Transport Layer는 HTTP 메시지를 받아서 통신에 용이한 패킷으로 분해를 하고 일련번호와 포트번호를 추가해 Internet Layer에 전송한다.

  3. Internet Layer에서는 수신지의 AMC 주소를 추가해서 Physical Layer에 전달한다. 이로써 네트워크 통신을 위한 준비가 완료되었고 Internet Layer는 상대가 어디에 있는지 찾아 중계해 가면서 배송해준다.

  4. 수신측의 Transport Layer는 패킷을 수신 받고 도착한 패킷의 일련번호를 보고 조립한다.

  5. 수신측의 Application Layer는 웹 서버에 대한 리퀘스트 내용을 처리하고 리퀘스트의 처리결과인 리스폰스 또한 TCP/IP 통신의 순서대로 클라이언트에 반환시켜준다.

🧳 지금까지 TCP/IP의 4계층과 통신 과정에 대해서 알아보았다. 다음 글 부터는 HTTP 프로토콜에 대해 자세히 알아봅시다 🙉

profile
오호

0개의 댓글