인터넷 네트워크

LeeKyoungChang·2021년 12월 29일
0
post-thumbnail

'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다.

 

📚 1. 인터넷 통신

🔔 인터넷(Internet)이란?
인터넷이라는 용어는 여러 통신망을 하나로 연결한다는 의미의 '인터 네트워크(inter-network)'에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망을 의미한다.

 

스크린샷 2021-12-29 오후 4 54 28

복잡한 인터넷망에서 통신하기 위해서는 최소한의 규칙이 있어야 한다. 이를 인터넷 프로토콜, IP 라고 한다.

  • 클라이언트와 서버가 만약 바로 옆에 있다면, 인터넷이 필요없이 케이블만 연결하면 될 것이다.
  • 실제 세계에서는 클라이언트와 서버가 물리적으로 굉장히 떨어져 있다.
    중간에 있는 인터넷이라고 하는 서버 노드들의 집합을 통해서 통신을 하게 된다.

 

📚 2. IP(인터넷 프로토콜)

🔔 IP(Internet Protocol)
인터넷 환경에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음

스크린샷 2021-12-29 오후 5 00 05
  • 클라이언트와 서버는 각각 고유의 IP 주소를 가진다.
  • 인터넷 프로토콜은 지정한 IP 주소에 데이터를 전달하는데 그 데이터의 단위를 패킷 이라고 한다.

 

📖 IP 인터넷 프로토콜 역할

  • 지정한 IP Address패킷(Packet) 통신 단위로 데이터를 전달한다.
  • 패킷(Packet)이라는 통신 단위로 데이터 전달
    패킷 : 패킷은 출발지 IP, 목적지 IP 등의 정보를 담고있다.
스크린샷 2021-12-29 오후 5 03 35

 

패킷 전달 과정
클라이언트 패킷 전달
스크린샷 2021-12-29 오후 5 03 50
서버 패킷 전달
스크린샷 2021-12-29 오후 5 04 02

패킷을 전달할 때, 패킷의 출발지 IP, 도착지 IP를 확인하면서 전달하며 최종 목적지까지 전달한다.

 

IP 프로토콜 한계
(1) 비연결성 : 대상이 없거나 서비스가 정상적이지 않더라도 무조건 패킷을 전송한다.
(2) 비신뢰성 : 중간에 패킷이 사라질 수도 있고, 패킷을 여러 개 보냈을 때 패킷이 순서대로 전송되지 않을 수도 있다.
(3) 프로그램 구분 : 같은 IP에서 서로 다른 애플리케이션들이 통신을 하고 있을 때 이것들은 구분하는데 한계가 있다.

위와 같은 문제점들을 해결해주는 것이 TCP 프로토콜 이다.

 

📚 3. TCP/UDP

계층
애플리케이션 계층HTTP, FTP
전송 계층TCP, UDP
인터넷 계층IP
네트워크 인터페이스 계층LAN 카드, LAN 드라이버
  • 애플리케이션 계층을 통해 보내진 데이터는 전송, 인터넷 계층을 거치면서 패킷 정보가 하나씩 씌워진다.
  • TCP 세그먼트에서는 출발지 PORT, 목적지 PORT, 전송제어, 검증정보와 같은 정보들이 붙게 되는데, 이러한 정보들이 인터넷 프로토콜만으로는 한계를 가졌던 점을 해결해준다.
  • IP 패킷까지 덧씌워진 데이터는 네트워크 계층에서 ethernet frame을 통해서 외부로 전송된다.

 

📖 TCP(전송 제어 프로토콜) 특징

Transmission Control Protocol

(1) 연결지향
TCP3 way handshake를 통해 연결 여부를 확인하고 메세지를 보낸다.
연결지향을 보장해주는 방식
[1] 클라이언트가 서버에게 SYN(연결 요청)을 보낸다.
[2] SYN을 받은 서버는 클라이언트에서 ACK(요청 수락)의 SYN(연결 요청)을 보낸다.
[3] 마지막으로 서버에게 받은 SYN의 대답으로 ACK(요청 수락)을 서버에게 보내면서 연결이 완료된다. (데이터 전송이 완료된다!)

  • 최근에는 최적화가 잘되어 있어 3번에서 ACK를 보낼 때 데이터를 같이 전송한다.
  • 논리적으로만 연결된 것이다.
스크린샷 2021-12-29 오후 5 05 57

 

(2) 데이터 전달 보증
메세지를 보냈을 때 이 패킷이 제대로 전달 되었는지 확인할 때 사용한다.
클라이언트가 서버에 데이터를 전송이 제대로 완료되었으면, 서버에서 클라이언트에게 데이터를 받았다는 응답을 해준다.

스크린샷 2021-12-29 오후 5 06 05

 

(3) 순서 보장
패킷의 도착 순서를 보장해준다.

  • 클라이언트가 패킷1, 패킷2, 패킷3 순서로 전송했을 때, 서버는 패킷1, 패킷3, 패킷2 순서로 도착했을 때,
  • 서버가 다시 클라이언트에게 2번부터 보내라고 요청을 전달하고, 클라이언트는 그에 맞게 다시 데이터를 전달한다.
스크린샷 2021-12-29 오후 5 06 11

 

이 모든 것이 가능한 이유는 TCP/IP 패킷 안에 출발지 IP, 목적지 IP, 전송제어, 순서, 검증 정보 등 모두 들어가져 있기 때문이다.
그래서 TCP를 신뢰할 수 있는 프로토콜이라고도 한다.

 

📖 UDP(사용자 데이터그램 프로토콜) 특징

  • UDP는 기능이 없다. (하얀 백지, 최근들어 각광받고 있다.)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증하지 않는다.
  • 순서 보장하지 않는다.
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
  • IP와 거의 같지만, PORT와 체크섬이 추가된 것과 같다.
    • PORT : 여러 패킷을 구분하기 위해 쓰이는 것
    • 체크섬 : 전달된 값이 변경되었는지를 검사하는 값

 

📚 4. PORT

스크린샷 2021-12-29 오후 5 06 20

만약 게임, 노래, 영화, 웹 서핑 여러 개를 할 때, 각각의 서버에서 날라오는 패킷들을 IP만으로 구분하는 것은 불가능하다.
이를 위해, TCP/IP, UDP/IP 패킷안에는 출발지IP, 목적지IP 뿐만 아니라 출발지 PORT와 목적지 PORT가 존재해 IP와 PORT를 결합하여 패킷들을 구분한다.

  • IP : 목적지 서버를 찾는 것
  • PORT : 서버에서 돌아가는 애플리케이션 구분하는 것
스크린샷 2021-12-29 오후 5 06 39

클라이언트 : IP 100.100.100.1 (10010번) 으로 보낸다.
서버 : 어떻게 클라이언트 PORT 번호를 알 수 있을까?

  • 클라이언트가 서버로 패킷을 보낼 때, 출발지 IP, PORT를 같이 보낸다.
  • 반대로 보낼 때는 출발지 IP, PORT를 사용해서 다시 보낸다.
  • ex) 하나의 아파트가 IP, 몇 동 몇 호가 PORT가 된다.

 

PORT 번호

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023 : 사용하지 않는 것이 좋다.
  • FTP : 20, 21
  • TELNET : 23
  • HTTP : 80
  • HTTPS : 443

 

📚 5. DNS

이전까지는 IP를 통해 통신했다.
ex)
클라이언트 IP : 100.100.100.1
서버 IP : 200.200.200.2

  • 200.200.200.2??? : 사용하다가 끝자리가 기억나지 않을 수 있다.
  • 또한, IP가 변경될 수도 있다.
    스크린샷 2021-12-29 오후 7 04 16
    ➡️ 이때, 접근하기 힘들다. (IP 바꾼 사람에게 물어봐야 한다.)

 

Domain Name System

  • 도메인 명을 IP 주소로 변환
  • DNS 서버에 원하는 IP 주소를 도메인 명과 함께 저장한다.
  • IP는 변경될 수 있고 기억하기 어렵기에, DNS를 이용해서 IP 주소를 저장한다.
  • 클라이언트는 도메인 명을 DNS 서버에 요청하면 응답으로 IP 주소가 오게되고, 그 IP 주소를 이용해서 원하는 서버를 찾는다.
스크린샷 2021-12-29 오후 5 07 00 (1) 클라이언트가 도메인 명으로 `google.com` 을 입력한다.

(2) DNS 서버에서는 도메인 명을 보고 IP 주소 200.200.200.2 를 클라이언트에게 전달(응답)해준다.

(3) 클라이언트는 응답받은 IP 주소, 즉 서버 주소 200.200.200.2 로 접속하게 된다.

 


참고

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글