[Network] TCP / IP

jgoneit·2023년 3월 26일
0

Network

목록 보기
2/6
post-thumbnail

TCP/IP(Transmission Control Protocol / Internet Protocol)

데이터를 보내고 받는 방법의 프로토콜 조합 중 하나입니다. 이렇게 이루어진 규약으로 조합된 통신방식으로 다른 컴퓨터들과 통신이 가능하게 됩니다. 어떤 방식으로 원리로 통신이 가능하게 되는지 알아보겠습니다.

💡 프로토콜(Protocol)
프로토콜은 네트워킹을 함에 있어서 전세계적으로 지정한 통신 규약. 만약 지정된 규약 없이 서로 소통을하면 서로 알아들을 수 없어 소통이 불가능할 것임. 우리 사회에서 전세계적으로 통합적으로 지정한 소통을 위한 약속들이라고 생각.

1. LAN과 WAN

먼저 LAN과 WAN은 네트워크 연결 영역을 기준으로 나누어 말할 때 사용되는 용어 입니다. 둘의 차이는 다음과 같습니다. LAN, WAN말고도 PAN, CAN, MAN 등도 존재합니다.

1. LAN(Local Area Network)

LAN은 근거리 통신망으로 지역화된 영역으로 제한된 네트워크를 말합니다. 사무실 내에서 이루어진 네트워크 혹은 집에서만 사용하는 WiFi 네트워크가 대표적인 예시라고 할 수 있습니다.

2. WAN(Wide Area Network)

WAN은 광역 네트워크로 먼 거리에 있는 컴퓨터그룹들을 연결하는 대규모 네트워크 입니다. 인터넷 자체도 WAN으로 간주되기 때문에 대규모의 네트워크부터 전세계의 네트워크 모두 WAN에 해당된다고 보시면 됩니다.

2. IP(Internet Protocol)

IP는 각 컴퓨터를 식별할 수 있는 주소입니다. 192.xxx.xxx.xxx의 형태로 이루어져 있으며 컴퓨터뿐만이 아니라 휴대전화, 서버, 휴대전화 라우터 등 모든 네트워크 장비에 IP가 할당됩니다. IP주소는 우리의 일상생활에서 도로명 주소로 표현할 수 있습니다.

IP 주소에는 private주소와 public주소가 있는데 LAN 네트워크 내부에서 사용되는 것이 Private IP, 인터넷에서 사용되는 것이 Public IP주소입니다. 또한 IP는 패킷(Packet)이라는 통신단위로 데이터를 전달합니다.

IP는 최종적으로 데이터 페킷이 네트워크를 통해 이동하고 목표대상에 도착할 수 있도록 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜입니다. IP에서 사용되는 가장 일반적인 전송 프로토콜의 종류에는 TCPUDP가 있습니다.

💡 패킷(Packet)
네트워크에서 패킷은 하나의 커다란 데이터를 작게 조각화한 것을 말합니다. 효율적으로 전송하기 위해 큰 데이터를 작은 데이터로 나눠 빠르게 전송하고 목적지에 도착한 패킷들은 원래대로 하나의 큰 데이터로 복원이 됩니다.

1. IP의 버전(IPv4와 IPv6의 비교)

그리고 IP는 IPv4IPv6의 버전으로 나눌 수 있는데 아래의 표로 둘을 비교해보았습니다.

구분IPv4IPv6
주소 공간4개의 8비트주소로 이루어진 32비트의 주소 공간을 가지고 있으며 약 43억개의 고유 IP 주소 제공8개의 16비트주소로 이루어진 128비트의 주소 공간을 가지고 있으며 약 3.4*10^38개의 고유 IP주소 제공
주소 표시192.168.1.12001:0db8:85a3:0000:0000:8a2e:0370:7334
주소 구성정적또는 DHCP(Dynamic Host Configuration Protocol)를 통해 할당관리의 단순화가 가능한 수동 및 자동구성(상태 비저장 주소 자동구성, SLAAC) 모두 지원
조각화라우터와 전송 장치 모두 패킷 조각화보내는 장치만 패킷 조각화
보안인터넷 프로토콜 보안(IPsec)이 선택사항으로 프로토콜에 내장 ❌IPsec이 필수 기능으로 프로토콜에 내장
단점- 제한된 주소 공간
- 비교적 비효율적인 라우팅
- 내장 보안 기능의 부재
- IPv4와 호환 ❌ → 전환 시 노력과 자원 필요
- 아직 보급률이 낮음
- 일부 구형 하드웨어 및 소프트웨어에서 지원하지 않을 수 있음

IPv4와 IPv6을 위의 표로 정리해보았습니다. 4버전과 비교하여 6버전의 장점들을 정리하면 다음과 같습니다.

💡 IPv6의 장점 정리

  • 훨씬 더 큰 주소 공간 보유(사실상 무제한에 가까운 IP주소 보장)
  • 자동 구성을 통해 중앙 서버 없이 자체 IP 주소 생성가능 → 네트워크를 보다 쉽게 관리 및 배포 가능
  • 라우터의 처리 부하 부담 ↓ → 네트워크 성능 ↑(라우터는 패킷 조각화 수행❌)
  • 향상된 보안(IPSec의 필수화로 필수 암호화 및 인증필요)

2. IP의 한계

IP만을 가지고 네트워크 통신을 하는데에는 한계가 있습니다. IP주소만 가지고 통신을 하게 되면 먼저 IP주소만 가지고 있다면 수신IP의 컴퓨터가 통신 불능의 상태라도 패킷을 전송하기 때문에 데이터 유출의 가능성이 있고 통신에 있어서 손실을 발생시키게 됩니다.

또한, 연결되지 않은 상태에서 패킷을 전송하게 되거나 노드를 타고 통신 중에 해당 경로의 노드에 이사잉 생기면 패킷의 중도 손실이 일어나게 됩니다. 하지만 IP주소만을 가지고 통신을 하게 되면 수신측에서 수신여부를 반환하지 않기 때문에 패킷의 중도 손실을 방지할 수 없습니다.

또한, 패킷들은 각자 다른 노드 탐색 경로로 이동할 수도 있기때문에 패킷 도착 순서가 변경될 수 있는데 이런 경우 패킷의 순서 유지 실패 가능성이 있습니다. 이러한 한계점을 해결하기 위해 TCP나 UDP같은 프로토콜과 함께 사용됩니다.

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 패킷의 중도 손실 가능성
    • 패킷의 순서 유지 실패 가능성

3. MAC 주소(Media Access Control Address)

MAC주소는 네트워크 접근 계층에서 형성됩니다. 일반적으로 하드웨어의 시리얼번호정도로 이해를 하면 됩니다. 동일 IP접속으로 충돌이 일어나는 경우도 있기때문에 네트워크 상에서 IP주소만을 가지고 송수신을 할 수 없습니다.

이를 해결하기 위해 패킷에 IP주소에 MAC주소를 추가적으로 포함함으로서 각 컴퓨터는 고유의 주소값을 가질 수 있고 네트워크 통신이 가능한 상태가 됩니다.

이때 MAC주소를 파악하는 과정에서 ARP(Address Resolution Protocol)이 사용됩니다. ARP로 네트워크 전체에 패킷을 보내고 해당 IP를 가지고 있는 컴퓨터가 자신의 MAC주소를 반환하여 서로의 통신을 연결하는 과정을 거치게 됩니다.

4. TCP와 UDP

1. TCP(Transmission Control Protocol)

TCP는 전송 프로토콜의 하나로 데이터를 보내고 받는 방법을 지정해놓은 규약입니다. TCP헤더는 각 패킷의 데이터 부분에 포함되어서 전송되며, 전송되기 전에 송/수신자와 연결하고 모든 패킷의 순서를 보장하고 수신여부를 확인합니다. 또한 누락된 패킷이 존재할 시 누락된 패킷을 재전송하는 역할을 수행합니다. TCP는 전송 속도보다 안정적인 데이터 전송에 중점을 두고 있습니다.

1. TCP 3-way handshake

TCP 3-way handshake는 통신하는 각 기기의 신뢰성 있는 연결상태를 성립시키고 데이터 통신을 위해, 통신을 시작하기 전 TCP가 연결을 설정하는 방식입니다.

아래의 과정은 TCP Sender(Client)입장에서 정리했습니다. 수신자는 Server로 생각해주시면 됩니다.

  • 1. SYN 전송: 전송자는 수신자와 연결 설정을 하기 위해 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 segment를 수신자에게 보냄
  • 2. SYN + ACK 수신: 수신자는 받은 요청을 바탕으로 SYN과 ACK(Acknowledgement)를 응답. ACK는 응답으로 보낸 segment가 유효한 SYN을 받았는지 여부를 반환
  • 3. ACK 전송: 마지막으로 전송자는 수신자에게 수신한 ACK를 보냄으로써, 연결이 되었음을 알려주고 통신을 연결하고 데이터 전송을 시작.

2. TCP 4-way handshake

TCP 3-way handshake가 통신의 시작을 위해 사용했다면 TCP 4-way handshake는 통신을 종료하고 연결을 안전하게 해제하기 위해 사용합니다.

아래의 과정은 TCP Sender(Client)입장에서 정리했습니다. 수신자는 Server로 생각해주시면 됩니다.

  • 1. FIN 전송: 전송자는 수신자와 연결을 종료하겠다는 FIN패킷을 보냄
  • 2. ACK 수신: 수신자는 받은 요청을 바탕으로 ACK는 응답으로 FIN패킷 받았음을 응답.
  • 3. FIN 수신: 통신이 마무리 되면 수신자는 전송자에게 FIN패킷을 보냄.
  • 4. ACK 전송: 전송자는 수신자에게 ACK를 응답함으로써 안전하게 세션이 종료되었음을 알림.

2. UDP(User Datagram Protocol)

UDP는 사용자 데이터그램 프로토콜의 줄임말으로, 동영상 재생이나 DNS조회와 같은 시간의 중요도가 높은 전송을 위해 사용됩니다. UDP는 통신을 하기 전 연결설정을 하거나 패킷 도착여부를 확인하지 않고 직접 패킷을 목적지로 전달하는 방식으로 프로세스를 수행합니다.

UDP는 전송 속도에 중점을 두어 패킷 수신 여부를 확인하지 않기 때문에 패킷 중도 손실이 되어도 재전송하지 않습니다. 그렇기 때문에 안정성의 측면에서 오류, 중복, 손실 등을 허용가능한 프로그램에서 사용되어야 하며, 어플리케이션의 정교한 제어가 가능하거나 연결설정에 무관해도 상관없을 때 사용됩니다.

패킷 손실 가능성이 있기 때문에 DDos 공격의 형태 등으로 악용될 수 있습니다.

1. UPD 사용 예시

UDP는 안정성보다 시간 중요도가 높은 프로그램들에서 사용됩니다. 사용 예시는 다음과 같습니다.

  • 온라인 게임
  • VoIP(Voice over IP)
  • DNS 서버

3. TCP와 UDP의 비교

구분TCPUDP
서비스 타입연결 지향적 프로토콜데이터그램 지향적 프로토콜
신뢰성높음낮음
순서 보장순서 보장순서 보장 ❌,but 애플리케이션 레이어에서 관리 가능
속도느림빠름

1. TCP

  • 연결지향(TCP 3 way handshake[가상 연결])
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP사용

2. UDP

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 동일 + PORT + 체크섬 정도 추가
  • 애플리케이션에서 추가 작업 필요

5. TCP/IP

1. TCP/IP 계층

TCP/IP의 계층은 응용 계층, 전송 계층, 인터넷 계층, 네트워크 접근 계층으로 네가지의 계층으로 이루어져 있습니다.

2. TCP/IP 흐름


TCP/IP로 네트워크 통신을 진행하게 되면 위의 그림과 같은 과정을 통해 수신자에게 데이터가 전달 됩니다. 자세한 내용은 추후 흐름에 대한 게시글을 작성하여 링크를 하겠습니다.

📚Reference

profile
BE to spring Developer

0개의 댓글