[Network] TCP/IP

Jay·2021년 1월 29일
0

Computer Science

목록 보기
14/50
post-thumbnail

TCP/IP !?

위키 백과에서 아래처럼 설명하고 있다.

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

하나씩 풀어서 이해를 하자.

  • TCP/IP = IP + TCP = 인터넷 프로토콜 + 전송 제어 프로토콜 이다.
  • IP = 패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않는다.(비신뢰성)
  • TCP = IP위에서 동작하고 데이터의 전달을 보장하고 순서도 보장한다. (신뢰성)
  • TCP를 기반으로 한(신뢰성 통신을 하는) HTTP,FTP,SMTP 등 수 많은 애플리케이션 프로토콜들이 IP 위에서 동작하기에 묶어서 TCP/IP라고 한다.

어렵다면 🥲 보다 더 기초적인 이야기부터 해보자.

1️⃣ 전화를 한다고 생각해보자.
전화를 할 때에는 양쪽이 모두 연결되어야 전화가 가능하다.
A-B가 연결되면 하나의 회선은 그 둘만 사용이 가능하다 = 서킷 통신
처음부터 둘이 1:1연결이 되거나 교환소를 거쳐서 연결이 되기도 한다.
A-B가 통화중인데 C가 B랑 전화하고 싶다고 한다면? A가 끊을때까지 기다려야 한다.

😃 어디선가 본 냉전시대의 미국의 예시가 재미있었다.

2️⃣ 위와 같은 서킷 통신은 1:1인데 전쟁을 하고 있던 미국은 통신망이 붕괴될 경우, 아무 연락조차 취할 수 없는 상황이 된다. 서킷 통신이 이런 회선단절에 매우 치명적이게 된다.
분명 긴급한 상황에서의 통신 방법은 아님이 분명하다.

🧐 그럼 뭐가 좋은 방법일까?

3️⃣ A-B사이에 여러개의 망을 둔 다고 생각해보자.
A-B가 연결되는데 예전에는 교환소 1개가 역할을 했지만 교환소를 여러개로 늘려서
하나의 교환소가 망가지면 다른데로 연결하면 되는거 아닌가..?
물론 가능 하지만 망가질때마다 가능한 교환소를 찾아서 다시 연결해야 한다..🙀

😇 여기서부터 새로운 발상이 나온다.

4️⃣ 다중망 자체가 약점이 있기에 한번에 모든 내용을 한번에 보내지 않고 내용을 잘게 쪼개서 보내는 방법이다. 잘게 잘라진 조각들이 각각의 목적지로 이동한다. 목적지를 향하여 가능한 크고 빠른 길로 가되 그 길이 복잡하다면 돌아가더라도 우회도로를 찾아가도록.

5️⃣ 그럼 A-B가 통신 할 때, A -> a,b,c,d,e -> B 이렇게 보내는데
a,b,c,d,e는 각각 목적지로 빠른길을 찾아 간다. 물론 순서 보장이 되지 않고 전송 보장이 되지 않는다. (대충 감이 오는가?😌)

🔎 그럼 어찌 해야할까? 목적지에서 받아서 순서를 맞추고 안 온 데이터들이 있으면 그것만 요청하는 것이다.

🆗 이렇게되면 가장 처음 문제였던 하나의 회선을 누가 쓰고 있다면 통화를 못하는 경우 와 같은 상황도 해결이 된다.
지속적으로 회선을 점유하고 있지 않기에 여러 사람이 회선을 같이 쓸 수 있다.
가는 길만 공유하는 것이다.
이게 바로 패킷 통신⚡️이다.


TCP/IP

오늘의 인터넷 통신은 위에서 본 패킷 통신을 기본으로 하고 있다.
TCP/IP는 이러한 패킷 통신을 하기 위한 인터넷 규약이다.
IP는 데이터 조각을 최대한 빨리 목적지에 보내려 한다. 조각이 순서가 맞든 아니든 다 제대로 갔든 아니든 일단 보내는 데 집중한다.
TCP는 IP보다 느리지만 꼼꼼하게 검사한다. 도착한 조각들을 줄 세워서 누락된 조각을 요청한다.
두 방식을 조합하여 통신하기 위함이 TCP/IP이다.


🆙 다시 위키 백과 설명을 보자.

TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다.

패킷 통신 방식은 위에서 이야기 하였다. 그러한 방식으로 통신할 때 필요한 규약 = IP

IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service)
TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.

IP와 TCP의 역할도 위에서 설명하였다.

HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.


전반적인 이해를 마쳤으면 자세하게 보자.

TCP

  • 두 host가 교환하는 데이터와 승인 메세지의 형식을 정의하며, server-client간 데이터를 신뢰성있게 전달하기 위해 만들어진 규약이다.
  • 컴퓨터와 컴퓨터를 연결 해주는 네트워크 선로는 어떤 선일지 아무도 모른다. 그러한 선로에 따라 데이터를 전달하는 속도와 손실되는 데이터 양이 달라지는데 이를 채워줄 수 있다.
  • 데이터 패킷에 일련의 번호를 부여함으로써, 데이터 손실을 찾아내고 교정하고, 순서를 재조합하여 클라이언트에 전달한다.

IP

  • 컴퓨터와 컴퓨터간 데이터 전송을 위해선 각 컴퓨터의 주소가 필요하다.
  • IP는 4바이트(32비트)로 이루어진 컴퓨터 주소로 192.168.9.255와 같이 3개의 마침표로 나누어진다.
  • IP는 TCP와 다르게 데이터 재조합, 손실여부 확인이 불가하며, 단지 데이터 전달만을 한다.
  • IP주소는 하드웨어 고유 식별 번호인 MAC주소와 다르게 임시적으로 다른 주체에게 받는 주소이므로, 바뀔 수 있다.

위에서 주구장창 설명했듯 TCP/IP는 결국 IP기반에 TCP가 사용된 것이다.
TCP가 데이터 추적을, IP가 데이터 배달을 한다.


전달 방식

1. Application Layer

  • 프로그램이 직접 interaction하는 레이어이다.
  • 데이터를 처음 받는 곳이며 HTTP, SMTP 등의 프로토콜을 가진다.

2. Transport Layer

  • TCP가 있는 레이어.
  • 포트를 통해 Application Layer가 TCP에게 데이터를 전송한다.
  • 각각의 포트에 프로토콜을 지정할 수 있다.
  • HTTP가 80포트를 사용한다면, TCP는 포트 번호로 어디서 데이터가 오는지 알 수 있다.
  • 포트를 통해 받은 데이터 패킷을 쪼갠다.
  • 이 패킷들은 각자 가장 빨리 전송될 수 있는 루트로 간다.
  • 각가의 패킷들은 TCP 헤더에 어떤 순서로 재조합 할지에 관한 정보를 갖는다.

3. Internet Layer

  • 패킷들이 인터넷 레이어에 PUSH된다.
  • IP를 사용하여 데이터의 우너천지와 목적지에 관한 정보를 첨부한다.

4. Network Layer

  • 마지막으로 패킷들은 네트워크 레이어로 전송된다.
  • 알맞은 하드웨어로 데이터가 전달되도록 MAC 주소를 핸들링 하고
  • 데이터 패킷을 전기신호로 변환하여 선로를 통해 전달 할 수 있게 해준다.


Email(STMP), HTTP, HTTPS, FTP, TELNET 등 우리에게 익숙한 인터넷 서비스가 대부분 TCP/IP 기반이다.


Reference

profile
Android Developer - Come to my medium (https://medium.com/@wodbs135)

0개의 댓글