네트워크란 무엇인가요?
네트워크란 컴퓨터 시스템 또는 장치들이 연결되어 통신하거나 데이터를 교환하는 구조를 뜻 합니다.
네트워크에는 노드와 링크로 구성되어 있습니다.
노드는 서버, 라우터 스위치 등 네트워크 장치를 의마합니다.
링크는 유선, 무선 등을 의미합니다.
TCP/IP 4계층과 각 계층에 대해 아는대로 설명해주세요
TCP/IP 4계층은 애플리케이션, 전송, 인터넷, 링크 계층들로 이루어져 있습니다.
애플리케이션 계층
응용 프로그램이 사용되는 프로토콜 계층입니다.
웹 서비스, 이메일 등 서비스를 사람들에게 제공하는 계층 입니다.
예시) FTP, HTTP
전송 계층
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공합니다.
애플리케이션과 인터넷 계층 사이의 데이터 전달할 때 중계 역할을 합니다.
인터넷 계층
장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하는 계층입니다.
패킷을 수신해야 할 상대의 주소를 지정하여 데이터 전달합니다.
상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있다.
링크 계층
전선, 광섬유, 무선 등 실질적으로 데이터를 전달하여 장치 간에 신호를 주고받는 계층입니다.
TCP/IP 계층과 OSI 7계층 차이점 설명해주세요
TCP/IP 계층과 OSI 7계층은 계층에 대한 차이가 있습니다.
TCP/IP의 애플리케이션 계층을 OSI 7계층에서는 세 개로 나누었습니다.
링크 계층을 데이터 링크 계층, 물리 계층으로 나누어 표현했다.
인터넷 계층을 네트워크 계층으로 부릅니다.
DNS가 무엇인가요
DNS란 도메인 이름과 IP 주소를 매핑해주는 서버입니다.
DNS를 사용하면 IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스를 제공할 수 있습니다.
TCP와 UDP 차이점 설명해주세요
TCP
TCP는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해 연결하여 신뢰성을 구축해서 수신 여부를 확인하며 가상회선 패킷 교환 방식을 사용합니다.
TCP를 사용하면 패킷들이 전송된 순서대로 도착하게 됩니다.
UDP
UDP는 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 데이터 그램 패킷 교환 방식을 사용합니다.
패킷이 독립적으로 최적의 경로를 선택하여 가므로 서로 경로가 다를 수 있으며 도착 순서가 다를 수 있다.
HTTP 프로토콜과 HTTPS 프로토콜 설명해주세요
HTTP
HTTP는 애플리케이션 계층에서 웹 서비스 통신에 사용되는 프로토콜 입니다.
주로 웹 브라우저와 웹 서버 간의 데이터 전송에 사용되며 웹 페이지, 이미지, 동영상 등의 리소스를 요청하고 응답하는데 사용됩니다.
HTTP는 평문으로 데이터를 전달하는 프로토콜이므로 중간에 데이터가 탈취되거나 도청될 위험이 있습니다.
이를 보완하기 위해 HTTPS 가 개발되었습니다.
HTTPS
HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣어서 신뢰할 수 있게 만든 HTTP 요청입니다. 즉 통신을 암호화 합니다.
HTTP/1 HTTP/2 차이 설명해주세요
HTTP/1
HTTP/1 은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었습니다.
그래서 매 요청마다 TCP 연결을 하며 RTT(패킷 왕복 시간)가 증가하는 단점이 있습니다.
HTTP/2
HTTP/2는 HTTP/1.x 보다 지연 시간을 줄이고 응답 시간을 더 빠르게 하는 프로토콜 입니다.
멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하여 빠른 응답을 가능하게 합니다.
쿠키와 세션 차이 설명해주세요
쿠키와 세연은 모두 HTTP 프로토콜의 약점을 보안하기 위해 사용되었습니다.
HTTP는 기본적으로 상태를 유지하지 않는 Stateless 프로토콜로서 각각의 요청과 응답이 서로 독립적으로 처리되기 때문에 상태 정보를 유지하기 어렵다는 약점이 있습니다.
이러한 문제를 해결하기 위해 사용자의 식별과 상태 정보를 관리하는 쿠키와 세션이 도입되었습니다.
쿠키
쿠키는 클라이언트 측에서 데이터를 저장하는 작은 텍스트 파일 입니다.
웹 서버는 클라이언트에게 쿠키를 전달하고 클라이언트는 이를 브라우저에 저장합니다.
사용자가 같은 사이트에 방문할 때 쿠키를 서버에 전송합니다.
쿠키는 사용자 식별, 선호 설정 유지, 장바니구 정보 유지 등 다양한 용도로 활용됩니다.
세션
세션은 서버측에서 상태 정보를 관리하는 방법입니다.
사용자가 웹 서버에 접속하며 서버는 해당 사용자에 대한 고유 세션 ID를 생성하고 사용자에게 전달합니다.
클라이언트와 사용자는 요청, 응답 때 마다 매개변수로 세션을 전달하며 통신합니다.
이를 통해 서버는 세션 ID를 기반으로 사용자의 상태 정보를 유지할 수 있습니다.
차이점
저장 위치
쿠키는 클라이언트측에 저장됩니다.
세션은 서버측에 저장됩니다.
저장 방식
쿠키는 텍스트 형태인 이름-값 쌍으로 구성됩니다.
세션은 서버 메모리나 DB 같은 지속적인 저장 공간에 저장됩니다.
3 way-handshake와 4 way-handshake를 설명해주세요
3 way-handshake
3 way-handshake 는 클라이언트와 서버가 TCP 연결을 할 때 사용하고 총 3번의 데이터를 주고 받아서 3 way-hadnshake라 불립니다.
1. SYN 패킷
클라이언트가 서버에게 연결 요청을 보냄
2. SYN-ACK 패킷
SYN 패킷을 받고 서버는 연결할 준비가 되었다는 SYN-ACK 패킷을 클라이언트에게 보냄
3. ACK 패킷
클라이언트는 SYN-ACK 패킷을 받고 연결 수락을 확인하는 ACK 패킷을 보내 서버와 클라이언트를 연결합니다.
클라이언트 연결 요청 > 서버 연결 확인 > 클라이언트 서버 연결
4 way-handshake
4 way-handshake는 클라이언트와 서버의 TCP 연결을 해제할 때 사용되며 총 4번의 데이터를 주고 받아 4 way-handshake라 불립니다.
1. FIN 패킷
클라이언트가 연결을 종료하기 위해 FIN 패킷을 서버에 전송
2. ACK 패킷
서버는 클라이언트의 FIN 패킷을 받고 연결 종료 준비가 되었다는 ACK 패킷을 클라이언트한테 보냄
3. FIN 패킷
서버가 더 이상 데이터를 보내지 않을 경우 서버는 자신의 데이터 전송이 끝났다는 의미로 FIN 패킷을 클라이언트에게 전송
4. ACK 패킷
클라이언트는 FIN 패킷을 받고 이에 대한 응답으로 서버에 ACK 패킷을 보내고 연결을 해제함
종료 요청 > 종료 확인 > 서버 종료 > 클라이언트 종료
3 way-handshake와 4 way-handshake의 과정을 통해 안전하게 서버와 클라이언트의 TCP 연결을 성립하고 해제합니다.