본문 바로가기
WEB/HTTP

[HTTP] 인터넷과 네트워크의 기본 개념 (IP, TCP/UDP, PORT, DNS)

by 정권이 내 2023. 1. 31.

[HTTP] 인터넷과 네트워크

 

인터넷을 이용하면 물리적으로 얼마나 멀리 떨어져있든지 간에 우리는 컴퓨터나 스마트폰을 통해 통신할수 있습니다.

지금까지 Spring을 포함해 다른 프레임워크 혹은 다른 언어로 개발했던 API 서버들 역시 인터넷을 통해 서비스를 제공하고 있는데 우리가 이렇게 인터넷으로 통신할수 있는 원리와 내부적으로 사용되는 기본 개념들에 대해 알아보겠습니다.

 

1. IP(Internet Protocol)

우리가 흔히 말하는 IP란 인터넷 프로토콜의 약자입니다. IP의 역할은 인터넷에서 단말기끼리 통신할때 각각의 지정된 IP주소로 데이터를 전달하기 위해 사용됩니다. 이때 전달되는 데이터의 단위는 패킷(Packet) 이라는 통신 단위로 전달합니다.

 

IP패킷의 규격은 출발지 IP, 목적지 IP, 전송 데이터 그외 여러가지 정보들이 합쳐져있습니다. IP패킷으로 데이터를 전송하면 그에대한 결과값 또한 받게되는데 이때 데이터가 오고가는 경로는 인터넷 망 자체가 매우 복잡하기 때문에 동일하지는 않습니다.

 

IP 프로토콜의 한계

  • 비 연결성 : 패킷을 받을 대상이 없거나 서비스 불능상태여도 패킷 전송
  • 비 신뢰성 : 중간에 패킷이 유실되거나 패킷의 순서를 보장하기 힘듬
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면??

 

2. TCP, UDP

TCP/IP 모델에서 Layer2에 IP가 있고 Layer3에 TCP, UDP가 존재합니다. 즉, TCP, UDP 방식은 IP를 보완해주는 방식으로 볼수 있습니다.

img

 

2.1 TCP, 전송 제어 프로토콜

TCP는 Transmission Control Protocol 의 약자이고 다음과 같은 특징이 있습니다.

  • 연결지향 - TCP 3 way handshake(가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할수 있는 프로토콜
  • 현재 대부분 애플리케이션에서 사용중이다.

 

TCP 3 way handshake

img

  • SYN : 접속 요청
  • ACK : 요청 수락

이 3번의 과정을 거쳐야 클라이언트와 서버간 연결이 정상적으로 되었음을 판단하고 그때부터 통신을 시작 하는 것입니다.

 

데이터 전달 보증

  • 클라이언트에서 서버로 데이터 전송시 서버는 클라이언트에게 데이터를 받았다는것에 대한 응답을 전달합니다.

 

순서 보장

  • 클라이언트에서 전송한 패킷순서대로 서버에 도착하지 않으면 서버는 클라이언트에게 재전송하라는 응답을 전달합니다.

 

2.2 UDP, 사용자 데이터그램 프로토콜

UDP는 User Datagram Protocol의 약자입니다. TCP와 반대로 기능이 거의 없고 IP와 거의 비슷하지만 포트와 체크섬 기능이 있습니다.

TCP 처럼 신뢰성과 안정성이 보장되지 않아 장점이 거의 없어보이지만 그러한 특징 때문에 오히려 사용자가 최적화를 해야 한다면 유용하게 사용될수도 있습니다.

 

3. Port

컴퓨터로 게임을할때 인터넷창도 띄워놓고 유튜브를 보거나 음악을 듣거나 넷플릭스를 볼때 우리눈에 보이는 네트워크 접속 말고도 백그라운드에서 돌아가는 수많은 프로세스들이 수시로 네트워크에 연결되어 통신을 할것입니다.

그런데 IP만 보자면 내 컴퓨터의 물리적인 IP는 분명 하나인데 어떻게 여러개의 프로세스들이 동시 다발적으로 네트워크에 접속하여 데이터를 주고 받을수 있을까요?? 그 이유는 Port에 있습니다.

img

 

인터넷 프로토콜 계층에서 IP에는 단순히 출발지, 도착지의 IP주소만 있었지만 상위 단계인 TCP 계층에서는 출발지, 도착지의 Port가 존재합니다. 이렇게 TCP계층과 IP계층을 합친 패킷을 간단하게 TCP/IP 패킷이라고 부릅니다.

 

설정가능한 포트의 범위는 0~65535이며 특정 포트들은 고유의 용도로 사용되고있습니다.

  • FTP : 20, 21
  • SSH : 22
  • TELNET : 23
  • HTTP : 80
  • HTTPS : 443

 

4. DNS(Domain Name System)

도메인은 IP를 대신하는 주소입니다. 네트워크상에서는 IP가 언제든지 변경될수 있고 IP가 변경되는것을 클라이언트가 항상 알수 없기 때문에 IP 대신 DNS 서버에 등록된 도메인 이름을 사용합니다.

img

 

 

 

출처 : 인프런 - 우아한 형제들 기술이사 김영한의 스프링 완전 정복 (모든 개발자를 위한 HTTP 웹 기본)

반응형

댓글