[HTTP 웹 기본 지식] [인터넷 네트워크]

khyojun·2022년 9월 7일
1

http기본

목록 보기
1/6

본 게시글은 김영한님의 HTTP 웹 기본 지식 강의를 보고 정리한 글입니다.


🔍 인터넷 통신

📌 인터넷에서 컴퓨터 둘은 어떻게 통신을 해야 될까?

생각을 해보면 2가지 경우로 나눠볼 수 있는데
1. 딱 붙어있는경우 (컴퓨터가)
2. 아주 멀리 떨어져있는 경우

📌 1번과 같은 경우

선으로 꽂아서 연결해버리자! 가 가능하다.

📌 2번과 같은 경우

선을 꽂지는 못하고 어떻게 해야될까?

📌 그래서 2번을 해결하기 위해 인터넷이 존재한다.

EX) 해저 광케이블, 인공위성 통신

📌 인터넷을 자세히 보게 되면

위 그림과 같이 망이 있는데 각각의 노드를 거쳐 서버로 도달하게 된다. 그치만.. 그림처럼 너무 복잡하게 규칙성이 없게 서버로 전달이 되는것 같은데 "당연히 규칙이 있겠지.. " 그 규칙들에 대해 알아보자.

🔍 IP(Internet Protocol)

📌 각각의 컴퓨터에 이제 IP주소라는것을 부여할 것이다.

클라이언트 IP:100.100.100.1 서버 IP: 100.100.100.2

📌 IP의 역할

  • 지정한 IP주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

📌 IP 패킷 정보

위와 같이 패킷 정보에 출발지 IP, 목적지 IP, 기타 등등을 전송데이터 위에 덮어서 전송을 시킨다.
전송 데이터위에 뚜껑을 덮어서 보내는 것과 같다.

📌 패킷 전달

EX) 클라이언트 IP: 100.100.100.1 서버 IP : 100.100.100.2
1. 클라이언트 -> 서버 : 출발 100.100.100.1, 목적지 : 100.100.100.2 전송데이터: Hello World!
2. 서버 -> 클라이언트 : 출발 100.100.100.2, 목적지 : 100.100.100.1 전송데이터: OK

  • 복잡한 노드망 속 1번 과정에서 지나가는 경로로만 2번 과정에서 돌아오는 것은 아니다!

📌 IP 프로토콜의 한계

  • 비연결성

    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
      • 패킷을 받을 대상이 없다?, 서비스 불능 상태? -> 갑자기 서버 컴퓨터를 꺼버린 경우? 고장이 난 경우
  • 비신뢰성

    • 중간에 패킷이 사라지면? -> 없어진다.
      • 중간에 노드서버 한 곳이 고장나면? -> 없어진다.
    • 패킷이 순서대로 안 온다면? -> 1,2,3 이라는 데이터를 그대로 보내는 경우 도착할 시에는 1,3,2로 도착할 수도 있다.
  • 프로그램 구분

    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?
      • LoL도 하고, Discord도 같이 하게 되면? 같은 IP인데 어떻게 구분을 해줘야될까?

이런 규칙의 한계를 보게 된다면 지금 우리가 사용하는 여러가지 네트워크로 연결이 되어지는 서비스들은 작동이 원할하게 되기는 그른것 같다. 그런 것들의 대안으로 나온 프로토콜도 한 번 알아보자.

🔍 TCP

📌 군대 생각이 나네............... 인터넷 프로토콜 스택의 4계층

정보처리기능사 자격증으로 휴가를 따내려고 공부하다가 봤던 계층들이었던거 같은데 감회가 새롭다.

인터넷 프로토콜 스택의 4계층

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 - 랜카드 등등

📌 프로토콜 계층 전달 과정

위 그림을 보면 아까 IP 프로토콜에서 전달을 할때 껍데기를 씌우는것과 같다고 하였는데 위 그림에서도 여러가지 종류의 껍데기를 씌우는것을 볼 수 있다.

📌 TCP 껍데기

이번에 씌운 것은 TCP 껍데기인데 패킷이 아닌 세그먼트라고 한다. 추가되어있는 정보에 PORT라는 것과 전송제어, 순서, 검증 정보 등등이 있는데 IP의 한계를 해결하기위하여 여러가지 정보들이 추가된 것을 볼 수 있다.

📌 TCP(Transmission Control Protocol) 특징

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

1. TCP 3 way handshake

여기서 SYN, ACK을 접속 요청 요청 수락이라고 하였는데
쉽게 SYN: 가도 되요? ACK: 네 오세요.

2. 데이터 전달 보증

3. 순서 보장

🔍 UDP?

옛날 컴퓨터실에서 몰래 UDP라는 말의 의미는 잘 몰랐지만 "야! 빨리 UDP로 들어와!" 라는 식의 말로 같이 게임을 했었던 적이 기억이난다.

📌 UDP(User Datagram Protocol)

  • 하얀 도화지와 같은 상태(기능이 거의 없다)
  • TCP에 있는 특징들은 다 없다.
  • 여럿 보장되는 것이 없지만, 단순하고 빠르다!
  • 정리
    • IP와 거의 같다. + PORT + 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요

참고사항으로는 최근 TCP에서 UDP로 많이 넘어가는 추세라고 한다. 그 이유로는 HTTP3에서 handshake와 같이 계속해서 검증하는 과정을 진행을 하는 과정도 다 없애고 속도를 더 높여보자고 하는 의견들이 많이 나와서 그렇다고 한다.

확실히 UDP로 넘어가면 속도는 완전 빨라질 거 같다. 그니까 TCP는 깐깐한 친구이고 UDP는 융통성이 상당히 많은 친구라는 느낌

🔍 PORT

앞에서 IP 프로토콜 설명할때 만약 Discord와 LOL을 같이 하게 되는 경우에는 같은 IP에서 어떤 프로그램을 사용을 하고 있는지 구분을 해줘야하는데 아까 TCP 껍데기에서 출발지 PORT, 목적지 PORT라는 것을 본 적이 있다. 어떤 것인지 알아보자.

다음과 같은 그림에서 봤을때 게임, 화상통화, 웹 브라우저 별도로 PORT번호가 다 다르다는 것을 알 수 있다. 클라이언트의 PORT 서버의 PORT도 다르다는것을 알 수 있다. 그래서 이것의 번호가 그렇다고 해서 무지막지하게 막 부여된 것은 아니고

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

이런것처럼 잘 보고 사용을 하는게 좋을 거 같다.

Port는 대표적인 예시로 아파트의 동,호수 예시로 사용을 한다. 게임, 화상통화, 웹 브라우저가 같은 아파트에 산다고 하였을때 각각의 포트는 동, 호수를 나누는 역할을 한다고 보면 된다.
ex) 게임: 103동 201호, 화상통화 103동 204호, 웹 브라우저 103동 205호
서버 게임 : 105동 105호 화상통화 : 105동 503호

🔍 DNS(Domain Name Service)

DNS는 영어 해석 그대로 도메인을 IP로 변환하는 서비스이다.
ex) www.naver.com -> 100.111.100.1

뭐 예시로 이렇게 변환을 하여준다. 이렇게 한 이유가 무엇일까?

  1. 언제까지나 우리가 IP 주소를 다 기억할 순 없다.
  2. IP는 변경이 되어질 수 있다.

대표적인 2가지 예시를 들어봤는데 여러가지 이유도 더 있을 수 있지만 우선은 이 2가지에 대해서 간략하게 설명을 해보겠다.

❗ IP주소를 계속 다 기억할 순 없다!

위 예시처럼 네이버의 주소가 www.naver.com이 아니라 100.111.100.1이었다고 해보자. 그러면 뭐 개발을 하려는 사람들과 그런 컴퓨터에 관심을 가지는 사람들은 기억을 할(?) 수도 있다. 그러나 일반인들 입장에서는 이걸 언제 계속 기억을 하고 있나. 그리고 네이버만 있는 것도 아니고 다른 사이트들도 얼마나 많은데 언제 이걸 다 기억을 하고 있을것이냐 하는 문제가 있다.

❗ IP는 변경이 되어질 수 있다!

예시를 계속 이용하여서 보면 네이버라는 회사가 계속 100.111.100.1 이라는 IP만 사용을 할까?
당연히 그렇지 않을 거다. 언젠가 서버들도 더 확장시키고 성능을 향상싴티기 위하여서 다른 것으로 바꿀 수도 있기 때문에 당연히 변환이 된다. 그러면 위에서 말했던 것처럼 IP를 기억을 하는 방향으로 계속해서 사용을 하게 되면 진짜 변태같이 외우고 있지 않는 이상 다 외우질 못한다. 그래서 DNS를 사용하게 된다면 IP가 변경이 되더라도 같은 DNS명으로 접속하면 해당 IP로 들어갈 수 있게 해주는 장점이 있다.

결론

  • 전화번호부와 같은 역할
  • 도메인 명을 IP 주소로 변환시켜주는 역할
  • IP변경이 되어도 동일한 도메인 명을 사용하면 된다.
profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글