알아두면 좋은 네트워크 기본 지식
웹 동작 방식, TCP와 UDP, HTTP와 HTTPS, OSI 7계층과 TCP/IP 프로토콜 등 네트워크 기본 지식에 대해 알아봅니다.
네트워크
- 모든 컴퓨터들을 통신망으로 연결하여 자원을 공유할 수 있게 해주는 디지털 전기통신망
- 두 개 이상의 컴퓨터가 연결돼 통신한다면 네트워크이다
- 유선 케이블을 연결해서 사용할 수도 있고, 무선으로 사용할 수도 있음. 즉 연결 형태에 따라 유선, 무선 네트워크로 분류가 가능함
네트워크 프로토콜
- 두 관련 프로그램간의 교환되는 데이터에 일정한 형태를 규정하는 규칙
- 통신의 복잡성으로 인해 하나의 프로토콜에서 모든 작업을 수행하는 것은 바람직하지 않음
웹 동작 방식
- 사용자가 브라우저에 URL을 입력
- 브라우저는 DNS를 통해 서버의 진짜 주소를 찾음
- HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성함
- TCP/IP 연결을 통해 HTTP요청이 서버로 전송됨
- 서버는 HTTP 프로토콜을 활용해 HTTP 응답 메세지를 생성함
- TCP/IP 연결을 통해 요청한 컴퓨터로 전송
- 도착한 HTTP 응답 메세지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨
TCP와 UDP
TCP는 1대1 연결형 서비스로 3-way handshaking(정확한 전송을 보장하기 위해 세션을 수립하는 과정)을 통해 연결을 설정합니다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있습니다.
UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있습니다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠릅니다. TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용됩니다.
HTTP와 HTTPS
HTTP란 서버/클라이언트 모델에 따라 데이터를 주고 받기 위한 프로토콜입니다.
하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTPS가 등장했습니다.
HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜입니다. 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 공개키/개인키 암호화 방식을 이용해 데이터를 암호화합니다.
- 공개키 : 모두에게 공개 가능한 키
- 개인키 : 나만 가지고 있어야 하는 키
공개키 암호화를 한다면 개인키로만 복호화할 수 있으며, 개인키 암호화를 한다면 공개키로만 복호화할 수 있습니다. 이를 통해, 신뢰성을 보장할 수 있습니다.
HTTPS의 자세한 동작은 아래와 같습니다.
- CA 기업에게 돈을 지불하고, 인증서 발급을 요청
- CA 기업은 서버의 정보와 공개 키 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화하여 발급
- 브라우저는 CA 기업의 공개키를 통해 암호화된 인증서를 복호화
- 인증서를 복호화하여 얻은 서버의 공개 키를 통해 데이터를 암호화하여 서버에 요청을 전송
OSI 7계층
OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
- 응용 계층: 사용자와 직접 상호작용하는 응용 프로그램들의 계층
- 표현 계층: 데이터의 포맷을 정의하는 계층
- 세션 계층: 컴퓨터끼리 통신을 하기 위한 세션을 만드는 계층
- 전송 계층: 수신 프로세스로 데이터의 전송을 담당하는 계층
- 네트워크 계층: 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
- 데이터링크 계층: 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
- 물리 계층: 데이터를 전기 신호로 바꾸어 주는 계층
OSI 7계층과 TCP/IP 프로토콜의 차이
- TCP/IP 프로토콜은 OSI 모델보다 먼저 개발되었다. 그러므로 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않는다.
- 두 계층을 비교할 때 , 세션(Session)과 표현(presentation) 2개의 계층이 TCP/IP프로토콜 그룹에 없다는 것을 알 수 있다.
- 두 모델 모두 계층형 이라는 공통점을 가지고 있으며 TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수인 반면, OSI 7 Layer는 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되어있다.
- OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.
캐시 (Cache)
- 데이터나 값을 미리 복사해 놓는 임시 장소
- 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶을 경우에 사용
- 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.
- 캐시는 시스템의 효율성을 위해 여러 분야에서 두루 쓰이고 있다.
쿠키 (Cookie)
- 인터넷 사용자가 웹사이트에 방문할 경우 그 사이트의 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일
- 이 기록 정보 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다.
- 스파이웨어를 통해 유저의 브라우징 행동이 추적당할 수 있고, 쿠키를 훔쳐 해당 사용자의 웹 계정 접근권한을 획득할 수 있다.
세션 (Session)
- 장치간의 정보교환
스파이웨어 (Spyware)
- 사용자의 동의 없이 설치되어 컴퓨터의 정보를 수집하고 전송하는 악성 소프트웨어
도메인, URL 경로, 쿼리 (Domain, URL Root, Query)
- http://example.com/abc/def?q=ghi
- 도메인(Domain) - http://example.com
- URL경로(URL Root) - abc/def
- 쿼리(Query) - q=ghi
유동아이피 (Dynamic IP)
- ISP에서 아이피가 부족해서 돌려막기 식으로 아이피를 회수하고 주고 회수하고 주고 반복함.
- 인터넷을 안 쓰는걸 ISP가 확인하고 현재 아이피를 회수하고 다른 새로운 인터넷 사용자에게 줌.
- 인터넷을 다시 쓰면 ISP가 확인하고 다른 사용자의 아이피를 회수하고 나에게 줌.
- ISP에 돈 2~3만원 더 주면 고정아이피를 준다고 함.
고정아이피 (Static IP)
- 특수성에 따라 1개의 아이피가 변경되면 안 되는 서버 운영(사이트) 등을 할 때 사용함.
- 유동아이피일 경우 값이 자꾸 바뀌어 서버나 사이트가 외부에서 접근이 원활하지 않게 됨.
- 방화벽 또한 등록한 고정 IP로 통과 가능.
- VPN으로 사이트들이 뚫리는 이유가 이거였다!!
도메인 (Domain)
- 서버가 있고 직접 연결할 수 있는 고정 아이피를 기억하기 힘들기 때문에 사용.
인터넷 서비스 제공자 (ISP)
- 개인이나 기업체에게 인터넷 접속 서비스, 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사를 말한다.
- KT, SKT, LG u+ 같은 !!
공유기[라우터] (Router)
- 공유기를 통해 서로 정보를 주고 받는다.
- 공유기가 클라이언트 포트(마찬가지로 유동아이피)를 각각 기기에게 주고 기기에서 다른 서버에 값을 요청했을 때 공유기를 통해 주고받는다.
- LAN(Private IP Address를 통해)에서 각 기기에 주고 각 기기에서 받음
- WAN(Public IP Address를 통해)에서 기기에서 받은 값을 서버로 전송하고 각 서버에서 값을 받아오고 다시 기기에게 줌
DHCP 프로그램 (Dynamic Host Configuration Protocol)
- 공유기는 DHCP 서버 프로그램을 내장하고 있음
- 인터넷을 사용하는 기기들은 DHCP 클라이언트 프로그램을 내장하고 있음.
- DHCP가 없었다면 모바일 혁명은 올 수 없었다.
맥 주소 (Mac Address)
- 통신 부품들은 부품마다 공장에서 기록된 고유한 식별자를 가지고 있다.
- ex) 88:36:6C:38:FC:50
- 기기들은 서로 맥 주소로 기기를 호출한다(사람의 이름과 같음)
기기들이 라우터를 통해 어떻게 유동아이피를 받는걸까?
- DHCP Client(내 휴대폰) : DHCP Server(라우터)님 88:36:6C:38:FC:50(내 휴대폰 맥 주소, DHCP Client) 인데요. IP주소 주세요!
- DHCP Server(내 라우터) : DHCP Client(내 휴대폰)님 8C:56:24:16:3C:40(내 라우터 맥 주소, DHCP Server) 인데요. 192.168.0.4 여기요!
자주 쓰이는 네트워크 용어
WWW : 인터넷을 통해 사람들이 정보를 공유할 수 있는 세계적인 정보 공간
URI : Who, 인터넷에 있는 자원을 나타내는 유일한 주소
- http://127.0.0.1:5000?query=자원
- 집 주소에 살고 있는 사람이라고 생각하면 됨
URL : Where, 프로토콜을 포함해 자원의 위치를 나타내는 주소
- https://127.0.0.1:5000
- 집 주소라고 생각하면 됨
URN : What, 자원이 무엇인지 유일하게 식별하는 이름
- urn:o-34:14253
- 주소와 사람의 생김새와는 무관한 주민등록번호라고 생각하면 됨
패킷 : 컴퓨터 간 데이터를 주고 받을 때 네트워크를 통해 전송되는 데이터의 작은 조각
- 큰 데이터가 있더라도 작게 나누어서 번호를 붙여 보냄
- 그 데이터가 네트워크의 대역폭을 너무 많이 차지하기 때문
- 목적지에서는 번호를 가지고 원본데이터로 되돌리는 작업을 함
아이피 : 인터넷에 들어갈 때 자신이 누구인지 알려줄 수 있는 유일한 정보
- 아이피를 통해 사용자의 정보를 알 수 있음
프록시 : 사용자의 정보를 숨기기 위한 첫 번째 수단
- 개념이 나오게 된 건, 여러 사용자가 같은 IP를 사용하여 인터넷 속도를 높이기 위해서이다 (캐시)
- 프록시 서버에 요청을 보내면 프록시 서버가 실제 서버에 값을 요청하고 응답을 받아 사용자에게 응답한다
VPN : 사용자의 정보를 숨기기 위한 두 번째 수단
- 프록시와 같은 방식으로 작동한다
- 차이점은 암호화된 값으로 사용자와 값을 주고받으므로 VPN서버마저 나의 IP를 알 수 없다
도메인 : IP주소를 외우지 않고 편리하게 사이트를 이동할 수 있게 나온 개념
- 10.80.39.224 과 같은 ip주소에 도메인을 씌우면 naver.com로 접속 가능
호스트 : 도메인에 속한 컴퓨터나 시스템 하나하나를 말한다
- jjmin321.github.io에서 jjmin321이 호스트명이다
- github.io는 도메인명이겠죠?
맥 주소 : 통신 부품 별로 가지고 있는 공장에서 기록된 고유한 식별자
- 기기들은 서로 맥 주소로 기기를 호출함 (사람의 이름과 같음)
- 88:36:6C:38:FC:50
DHCP : 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜
- Client(내 휴대폰) : Server에게 맥 주소 정보를 주고 IP주소를 받음
- Server(내 라우터) : Client에게 맥 주소 정보와 IP주소를 줌
Leave a comment