HTTP + 암호화 = HTTPSHTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다.
하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리다.(오늘날에는 거의 차이를 못느낄 정도이다.)
또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생하다.
분산 처리 (캐시 사용, 로드밸런싱) - 캐시된 웹페이지가 있으면 프록시 서버에서 바로 클라이언트에 전송보안 (요청과 응답의 필터링) - 바이러스 검출, 컨텐츠 차단, 웹서버 방화벽
시스템이 네트워크에 접속되어 있는 인터페이스 (NIC)의 설정 상황을 보여주거나 편집하는 유틸리티 명령어이다.
ipconfig의 경우는 windows에서 사용되는 명령어 이며, ifconfig 유닉스계열의 시스템에서 사용
HTTP 는 '비연결성'과 '무상태' 라는 특성을 지님으로 멀티 쓰레드 환경에서 웹 어플리케이션이 보다 많은 요청과 응답을 할 수 있도록 한다. (상태를 저장해야 하는 서버의 부담을 줄임)
Keep Alive!
1. 쿠키
2. 세션
키-밸류 형태로 웹 브라우저의 쿠키 저장소에 저장=> 쿠키와 세션의 문제점들을 보완하기 위해 토큰( Token )기반의 인증 방식이 도입
인터넷
인트라넷
엑스트라넷
허브
스위치
[정리]
허브는 다른 모든 포트에서 허브로 들어오는 모든 트래픽을 보내는 간단한 장치이다. 이로 인해 네트워크에서 불필요한 트래픽 흐름이 많이 발생하여 충돌이 발생할 수 있다.
반면에 스위치는 연결된 장치에 대한 정보를 수집하고 관련 포트를 통해서만 들어오는 트래픽을 전달한다. 또한 스위치에서 동시 통신을 유지할 수 있다.
따라서 허브는 소규모 네트워크에 적합하고 스위치는 트래픽이 많은 대규모 네트워크에 더 적합하다.
= 유동IP(Dynamic Host Configuration Protocol, DHCP)와 고정IP(Static IP) 의 차이점
고정 IP 는 사용자 전용으로 부여된 IP 주소로 이를 반납하기 전까지는 IP 정보가 변경되지 않고 사용이 가능하며 다른 장비에서 해당 주소에 대한 사용이 불가하다. IP를 고정시킴으로써 외부에서 동일한 주소로 통신할 수 있기 때문에 이를 방화벽을 통한 통신을 제어하여 관리할 수 있다.
반면 유동 IP는 고정적이지 않고 필요할 때 IP 주소를 할당하여 사용할 수 있도록 한다. 예를 들어 고정 IP 보다 더 많은 사용이 필요한 장비가 있을 경우 유동 IP를 통해 장비를 사용할 때 돌아가면서 IP를 부여하여 사용할 수 있다. 이는 부족한 IP 개수 문제를 해결할 수 있으며 단말기들의 IP 회전율과 가용성을 높여 준다는 장점이 있습니다.
IP문제를 해결하고자 나온 것이 유동 IP
한 컴퓨터가 사용하지 않을 때 그 IP를 다른 컴퓨터에게 빌려주는 개념!

방화벽은 실질적으로 IP/Port 기반으로 차단하는 솔루션이기 때문에 외부에서 내부로 반드시 들어와야 하는 서비스, 예를 들어 웹/메일 서비스와 같은 경우에는 방화벽은 외부에서 누가 들어올 지 정의할 수 없으므로, 관련 서비스 포트를 모두 허용으로 설정해야 한다.
그렇게 되면, 일반 유저뿐만 아니라 악의적인 의도를 가진 해킹/악성코드/스팸메일 등도 여과없이 들어올 수 밖에 없으므로, 이러한 방화벽의 한계점을 보완하기 위해(대체는 아님) 나온 솔루션이 침입 탐지(IDS)/방지(IPS) 시스템이다.
근래에 도입되는 솔루션은 대부분은 IPS
IPS : 침입탐지(Intrusion Detection), 안티 바이러스(Anti-virus)와 같은 Signature 기반의 기술들과 방화벽(Firewall)과 같은 네트워크 기반의 차단 솔루션을 논리적으로 결합한 방식IP Address의 한계 : IP Address만을 이용해 컴퓨터로 데이터를 보낸다면 컴퓨터는 그 데이터를 받지만, 문제는 그 데이터가 어느 프로세스에서 처리되어야 하는 것인지를 알 수가 없다.
통신을 해야하는 프로세스는 각자 자신의 Port를 가지고 있고, 해당 Port를 통해 데이터를 받는다.
Port 정보를 통해 어떤 프로세스가 메세지를 받아야 하는지 알 수 있다.
Port는 TCP 계층에서 추가된다.
자주 사용되는 port : 80(http), 443(https), ftp(20,21), ...
<3-handshaking>
Why? 장치들 사이에 논리적인 접속(session)을 성립하기 위해!

SYN 패킷을 보낸다. (sequence : x)ACK와 SYN 패킷을 보낸다. (sequence : y, ACK : x + 1)ACK(y+1)를 서버로 보내면 연결이 이루어진다.SYN: synchronize sequence numbersACK: acknowledgment<4-handshaking>
Why? 세션을 종료하기 위해!

FIN 플래그를 보낸다.FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)FIN 플래그를 클라이언트에게 보낸다.FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (단, 아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다)ACK를 받은 이후 소켓을 닫는다 (Closed)TIME_WAIT: Client가 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초)동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정B의 공개키를 이용하여 평문을 암호화 한다.B의 비밀키로만 복호화가 가능하다. B는 자신의 비밀키로 복호화한 평문을 확인하고, A의 공개키로 응답을 암호화하여 A에게 보낸다. A의 비밀키로 암호화된 응답문을 복호화한다.B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하여 B에게 보낸다.자신(B)의 비밀키로 복호화한다.대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.대칭키로 암호문을 복호화한다.=> 이 방식이 바로 SSL(Secure Socket Layer)의 시초