프로그래밍/http

[ http ] 01. 인터넷 네트워크

Yanoo 2021. 9. 17. 00:04
728x90
반응형

인터넷 통신

컴퓨터 둘은 어떻게 통신을 할까?

1. 직접 컴퓨터가 연결되어 있는 경우

직접 연결되어 있다면 요청하면 서버가 바로 응답을 보낼 것이다.

 

2. 하지만 인터넷을 거친다면?

이 경우엔 어떻게 통신을 할까?

 

 

IP(인터넷 프로토콜)

일단 둘이서 통신하기 위해서는 IP 주소가 필요하다.

지정한 IP 주소에 데이터를 전달하게 되는데 패킷(Packet)이라는 통신 단위로 전달한다.

출발 IP, 도착IP 등을 담은 패킷이 출발하고

각 노드들은 IP 프로토콜이라는 통신 규약을 따르고 있는데 서로 노드끼리 이동하면서 목적지인 200.200.200.2라는 IP 주소를 찾게 된다. 그렇게 이동하면서 올바른 IP주소로 도달하게 된다.

반대로 서버가 응답을 가질 때는 다른 노드들을 거쳐 클라이언트로 갈 수도 있다.

하지만, 이런 IP 프로토콜은 한계를 가지고 있다.

 

IP 프로토콜의 한계

  • 보냈는데 목적지인 PC가 꺼져있을 경우가 있을 수 있고, 전송됐지만 보낸 사람은 모르는 경우가 있을 수 있다.(비연결성)
  • 중간에 패킷이 사라지거나 패킷을 보냈는데 순서대로 안오는 경우(비신뢰성)
  • 한 PC에서 게임도 하고 음악을 들을 때는 IP가 같은 데 이것은 어떻게 구분을 할까?(프로그램 구분)

 

이 문제를 TCP가 이를 해결해 준다.

 

TCP와 UDP

패킷이 소실되고 순서가 바뀌는 등의 문제를 TCP가 해결해준다.

  • 인터넷 프로토콜 4계층

  • TCP 특징
    • 연결 지향 : 연결을 하고 메시지를 보낸다. - TCP 3 way handshake(가상 연결)
    • 데이터 전달 보증
    • 순서 보장
    • 신뢰할 수 있는 프로토콜
    • 현재 대부분 TCP를 사용

 

TCP 3 way handshake란?

이런 과정을 거치는데 요즘에는 3번째 과정인 ACK를 진행하면서 데이터를 전송한다고 한다.

중요한 사실은 가상 연결이라는 점이다. 물리적 연결이 아닌 논리적 연결이다.

 

 

  • UDP란?

  • 기능이 거의 없다.
  • 연결 지향 - TCP 3 handshake 없음
  • 데이터 전달 보증 안함
  • 순서 보장 안함
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
  • 애플리케이션에서 추가 작업이 필요함
  • IP와 거의 같은데 PORT와 체크섬 정도만 추가된다.

여기서 PORT란 한 PC는 IP를 가지게 되는데 게임에 쓰거나 음악을 듣거나 하는 것을 구분해 주는 것이 PORT이다.

(체크섬은 이 메시지가 맞는 지 검증)

 

UDP를 쓰는 이유는 TCP 3 hand shake를 하느라 비교적 느리다. 그리고 TCP는 이제 바꾸기 어려워서 UDP를 가공해서 쓰기 좋기에 사용한다.

 

PORT

같은 IP에서 구분할 때 사용한다. 즉 위에서 설명한 패킷에 IP랑, PORT 둘다 보내어 구분할 수 있다.

  • 0 ~ 1023: 잘 알려진 포트라, 사용하지 않는 것이 좋다.
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443
  • 0 ~ 65535 할당 가능

 

DNS

문제는 IP는 기억하기 어렵다는 것이다. 그리고 IP는 변경될 수 있다는 문제점이 있다.

그 때 쓰이는게 도메인 네임 시스템(DNS)이다. 도메인 명을 IP 주소로 변환시켜 준다.

 

728x90
반응형