네트워크 기본구조
허브
전기적인 신호를 증폭시켜 LAN의 전송거리를 연장시키고, 여러대의 장비를 LAN에 접속할 수 있도록 함.
IP를 할당하는 기능이 없고, 단순히 포트를 늘려주는 기능
허브의 두가지 기능
- 멀티포트는 한번에 많은 디바이스를 연결할 수 있는 기능으로, 만약 허브가 없다면 디바이스는 두 대만 연결 가능
- 리피터 같은 경우에는 전기적인 신호를 증폭시켜 들어온 데이터를 재전송 한다는 의미. 리피터 기능을 사용하면 LAN의 최대 전송거리도 연장되고, 접속할 수 있는 장비의 수도 많아짐.
허브 이미지에서 허브는 연결된 모든 디바이스에 데이터 프레임을 전송
하나의 디바이스가 프레임을 전송하면 모든 장비와 충돌이 발생할 수 있으므로 허브에 접속된 모든 장비들은 하나의 충돌 영역에 있다고 함
스위치
네트워크 단위들을 연결하여 통신 장비 기본구조
허브에 연결된 한 디바이스에서 발생하는 Collision이 허브에 연결된 모든 영역에 노드들에게 영향을 미쳐 통신을 하지 못함. 이러한 문제를 해결하기 위해서 Collision Domain을 나누어 줄 수 있는 장비가 브릿지 (S/W적 처리), 스위치 (H/W적 처리)
스위치의 5가지 작업
- Learning : 테이블에 정보를 저장
- Flooding : 모르는 정보를 모든 호스트에 뿌림
- Forwarding : 알고있는 목적지에 정보 전달
- Filtering : 다른 목적지로 넘어가지 못하게 함
- Aging : 오래된 정보를 지움
스위치는 허브와 달리 정해진 목적지에만 데이터를 전송하는 것을 확인할 수 있음
프레임 충돌이 감소하여 네트워크 성능이 향상되고, 보안성도 좋아짐
라우터
패킷의 위치를 추출하여 그 위치에 대한 최상의 경로를 지정하며 이경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장비
서로 다른 프로토콜로 운영하는 통신망에서 정보를 전송하기 위해 경로를 설정하는 역할을 제공하는 핵심적인 통신 장비
논리적 네트워크
내부 네트워크
로컬 네트워크 개념으로 라우터나 방화벽 안쪽에 자리한 네트워크로 라우터를 넘어가지 않는 이상 내부에 있는 호스트끼리만 통신이 가능한 네트워크
외부 네트워크
라우터나 방화벽을 넘어 밖에 위치한 네트워크로 외부 네트워크로 나감으로써 인터넷이 만들어짐
네트워크 통신
유니캐스트
- 고유 주소로 식별된 하나의 네트워크 목적지에 메시지를 전송하는 방식
- 네트워크에서 가장 많이 사용되는 트래픽
- 랜 통신에서 송신자의 맥주소와 수신자의 맥주소를 알고있을때 해당 데이터를 정확히 목적지에 전달하는 방법 -> 1:1 통신
브로드 캐스트
- 같은 네트워크에서 모든 호스트에게 데이터를 전달하는 방식
멀티캐스트
- 한번의 송신으로 메시지를 여러 컴퓨터에 동시에 전송하는 방식
- 유니캐스트와 브로드캐스트를 이용한 방식으로 그룹을 지어 해당 그룹에 데이터를 보냄
MAC 주소
LAN에서 통신할 때 사용하는 주소. 2계층에서 사용하는 구조로 물리적인 구조
다른 MAC 주소와 겹치지 않는 고유의 주소를 할당하고, 48비트로 구성되어있음
ex. 6C-29-59-84-EB-A3
앞에 3개는 OUI : IEEE에서 부여하는 일종의 제조회사 식별 ID
뒤에 3개는 고유번호 : 제조사에서 부여한 고유번호
IP주소
네트워크상에서 특정 개체를 나타낼 수 있는 논리적 주소
ip주소 = 네트워크 +호스트본구조
ex)
여러 학생들이 기숙사에서 살고 있다. 각 방에 있는 학생들에게 택배를 주기 위해서는, '코코넛 기숙사'의 주소로 택배를 보내는 것 이외에 호수나 받는 학생의 특징을 적어야 한다. 택배를 학생에게 주기 위해서는 학번을 추가적으로 적는다고 가정
위와 같은 상황에서 ip주소와 맥 주소는 각각 아래의 예시와 대응
ip 주소는 주소 -> '코코넛 기숙사'
mac 주소는 학번 -> '20184500123'
IPv4 & IPv6
IPv4
숫자로 구성된 인터넷 공인주소. 4개의 "."(점)으로 구분
구분된 각각의 숫자들이 0~255 까지의 숫자를 사용할 수 있고 이 숫자는 전세계적으로 하나만 존재 가능
IP주소는 32bit 체계, 8bit 씩 4개의 옥텟으로 구성됨
IPv6
128bit 주소체계로 이루어져 있으며, 기존의 IPv4는 32bit 주소인데 이보다 4배나 많은 정보를 수용할 수 있음
도메인 네임
도메인 네임은 넓은 의미로는 네트워크상에서 컴퓨터를 식별하는 호스트명을 가리키며, 좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미한다
DNS
- Domain Name System / Domain Name Server
- 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템
- 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다.
- 예를들어 KT의 DNS주소 168.126.63.1 <-> kns.kornet.net
쿠키&세션
쿠키
- 클라이언트 로컬(local)에 저장되는 키와 값(key, value)이 들어있는 작은 데이터 파일
- 서버에서 HTTP Response Header에 Set-Cookie 속성을 이용하여 클라이언트에 쿠키를 제공
- 이름, 값, 만료 날짜/시간(쿠키 저장기간), 경로 정보등이 들어있음
- 클라이언트의 상태 정보를 로컬에 저장했다가 요청(Request)할 때 참조됨
- 서버측에서 만료 날짜/시간을 지정하여 정해진 시간동안 데이터(상태정보)를 유지할 수 있음 (로그인 상태 유지에 활용된다)
세션
- 서버(Server)에 클라이언트의 상태 정보를 저장하는 기술로 논리적인 연결
- 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 함
- 웹 서버에 클라이언트에 대한 정보를 저장하고 클라이언트에게는 클라이언트를 구분할 수 있는 ID를 부여하는데 이것을 세션아이디라 한다.
쿠키와 세션의 차이
- 저장 위치
- 쿠키는 클라이언트(브라우저)에 메모리 또는 파일에 저장하고, 세션은 서버 메모리에 저장된다.
- 보안
- 쿠키는 클라이언트 로컬(local)에 저장되기도 하고 특히 파일로 저장되는 경우 탈취, 변조될 위험이 있고, Request/Response에서 스나이핑 당할 위험이 있어 보안이 비교적 취약하다. 반대로 Session은 클라이언트 정보 자체는 서버에 저장되어 있으므로 비교적 안전하다.
- 라이프 사이클
- 쿠키는 앞서 설명한 지속 쿠키의 경우에 브라우저를 종료하더라도 저장되어 있을 수 있는 반면에 세션은 서버에서 만료시간/날짜를 정해서 지워버릴 수 있기도 하고 세션 쿠키에 세션 아이디를 정한 경우, 브라우저 종료시 세션아이디가 날아갈 수 있다.
- 속도
- 쿠키에 정보가 있기 때문에 쿠키에 정보가 있기 때문에 서버에 요청시 헤더를 바로 참조하면 되므로 속도에서 유리하지만, 세션은 제공받은 세션아이디(Key)를 이용해서 서버에서 다시 데이터를 참조해야하므로 속도가 비교적 느릴 수 있다.
굳이 쿠키를 사용하는 이유
세션이 쿠키에 비해 보안도 높은 편이나 쿠키를 사용하는 이유는 세션은 서버에 저장되고, 서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다. 이러한 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여, 서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.
URI, URL, URN
URI (Uniform Resource Identifier)
인터넷에 있는 자원을 나타내는 유일한 주소
URI의 존재는 인터넷에서 요구되는 기본 조건으로서 인터넷 프로토콜에 항상 붙어 다님
URI의 하위 개념으로 URL, URN이 있음
URL
URL은 네트워크상에서 자원이 어디 있는지를 알려주기 위한 규약이다. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크 상의 자원을 모두 나타낼 수 있다.
- 프로토콜 포함
- 해당 자원의 위치, Path를 의미
- 일반적으로 사이트 도메인을 자주 의미함.
- 웹 상 뿐만 아니라 컴퓨터 네트워크상의 자원은 모두 나타낼 수 있다.
URN
URN은 urn:scheme를 사용하는 URI를 위한 역사적인 이름이다. URN은 영속적이고, 위치에 독립적인 자원을 위한 지시자로 사용 RFC 2141 문서에서 정의되었다.
- 프로토콜 포함 X
- 해당 자원의 이름을 의미
- 독립적인 자원 지시자
- Page 이후 부분까지 포함
FTP, HTTP, HTTPS
FTP(File Transfer Protocol)
- 파일 전송 프로토콜은 하나의 호스트에서 다른 호스트로 파일을 복사 하기위해 TCP/IP에 의해 제공되는 표준 기능이다.
- FTP는 호스트 간에 두개의 연결을 설정한다는 점에서 다른 클라이언트 서버 응용들과 다르다.
- 이러한 제어와 데이터 전송의 분리는 FTP를 좀 더 효율적으로 사용할 수 있도록 만들어 준다.
- FTP는 Wel Known Port TCP포트인 20번과 21번 을 사용한다.(20 번은 데이터포트, 21번은 제어포트)
HTTP
- 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
- TCP/ IP를 이용하는 응용 프로토콜이다.
(컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜) - HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
(이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.) - HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
- 평문(암호화 하지 않은) 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장이 가능하다
- 완전성을 증명할 수 없기 때문에 변조가 가능하다
HTTPS
- HTTP의 약점을 보완하기 위하여 HTTP에 암호화나 인증 등의 구조를 더한 것을 HTTPS(HTTP Secure)
- HTTP 통신을 하는 소켓 부분을 SSL(Secure Socket Layer)이나 TLS(Transport Layer SEcurity)이라는 프로토콜로 대체
- HTTPS는 직접 TCP와 통신하지 않고 SSL과 통신
- SSL을 사용함으로써 암호화, 증명서, 완전성 보호를 이용할 수 있게 됨
SSL
SSL은 HTTP와 독립된 프로토콜. 애플리케이션 계층에서 동작하는 SMTP나 Telnet 등에서도 이용될 수 있음. SSL은 HTTP뿐만 아니라 세계 어느 곳에서도 널리 사용할 수 있는 네트워크 보안기술
출처: https://hahahoho5915.tistory.com/32 [넌 잘하고 있어]
출처: https://jeong-pro.tistory.com/80 [기본기를 쌓는 정아마추어 코딩블로그]
출처: https://itbellstone.tistory.com/86 [BELLSTONE]
출처: https://programming119.tistory.com/194 [개발자 아저씨들 힘을모아]
출처: https://goitgo.tistory.com/37 [Informaion Security]
출처: https://blog.sonim1.com/99 [Kendrick's Blog]