네트워크와 인터넷
🛜
네트워크: 서로 다른 기기( 컴퓨터 )가 통신하기 위해 유선 혹은 무선으로 연결되어 있는 것
인터넷: 여러 네트워크가 연결되어 있는 것
IP 주소( Internet Protocol address )
인터넷에서 서로를 식별할 때 ip 주소를 사용한다..
으로 구별된 각 자리가 0에서 255 사이의 숫자로 나타내지고 192.168.123.123 같은 형태를 띄고 있다. Ip 주소는 mac의 경우 ipconfig getifaddr en0
나 ifconfig
로, 윈도우는 ipconfig
로 확인할 수 있다.
PORT
📌 포트( PORT ) 번호
네트워크에서 컴퓨터나 기기의 특정 애플리케이션이나 서비스에 연결할 수 있도록 식별하는 번호
포트 번호는 IP주소 뒤에 콜론(:
)로 구분하여 나타낸다. 예를 들어 192.168.123.123:3000
의 경우 포트번호는 3000 이다. 이미 사용 중인 포트는 중복해서 사용할 수 없으며 중복 시 port already in use 포트번호
라는 error message를 받게 된다. 이 때에는 다른 포트를 이용하거나 필요없는 포트를 종료해야 한다.
// 열려있는 모든 포트 표시
netstat -anv
// LISTEN 중인 포트 표시( 응답 대기 중 )
netstat -anv | grep LISTEN
// 확인하려는 포트번호 상태 확인
netstat -anv | grep 포트번호
// 특정 포트번호를 확인하는 쉬운 방법
lsof -i :포트번호
DNS( Domain Name System )
📌 DNS: 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템
우리는 다양한 인터넷 사이트를 이용하는데 필요한 모든 IP 주소를 외워서 인터넷을 이용하기는 힘들다. 그래서 필요한 것이 도메인이다. 도메인도 IP와 동일하게 인터넷에서 서로를 식별할 때 사용되는 고유한 이름이다. 다만 숫자가 아닌 문자로 구성되어 있다.
이 도메인 이름과 IP 주소 간의 변환을 처리하는 시스템이 바로 DNS( Domain Name System )이다.
DNS의 작동 서버 순서는 다음과 같다.
server ? client ?
다른 컴퓨터나 디바이스가 통신을 한다고 가정했을 때 서버( server )는 응답( response ) 하는 컴퓨터 시스템이고 클라이언트( client )는 요청( request )하는 컴퓨터 시스템이다.
클라이언트가 서버에 요청을 보내면 서버는 그 요청을 처리하고 결과를 클라이언트에게 반환한다. 서버와 클라이언트 모두 각각 호스트이고 서비스를 다른 클라이언트가 접근할 수 있도록 게시하는 것이 호스팅이다.
TCP( Trnasmission Control Protocol )
📌 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜
TCP
는 패킷( 네트워크 데이터 전송 단위 )의 손실을 검사하고 순서가 바뀌지 않도록 보장한다. UDP
에 비해 안전성이 높기 때문에 파일, 이메일 전송 등 신뢰성이 중요한 통신에서 자주 사용된다.
TCP
는 연결 시에는 3-Way Handshake
단계를 거치고 종료 시에는 4-Way Handshake
단계를 거친다.
3-Way Handshake( 연결 )
SYN( Synchronize Sequence Number ) 패킷과 ACK( Acknowledgement Number ) 패킷을 주고 받으면서 서로 통신을 시작할 준비가 되었는지 확인하는 과정이다. 클라이언트가 접속하면 서버에게 SYN 패킷을 전송하고 ACK 패킷을 요청한다. 통신 준비가 완료되면 서버는 SYN 패킷과 ACK 패킷을 클라이언트에게 응답으로 보내준다. 클라이언트가 SYN + ACK 패킷을 수신하고 ACK 패킷을 서버에게 전송하면 통신이 시작된다.
4-Way Handshake( 종료 )
FIN( Finish )패킷과 ACK( Acknowledgement Number ) 패킷을 주고 받으면서 TCP 연결을 종료할 준비가 되었는지 확인하는 과정이다. 클라이언트가 FIN 패킷을 서버에게 전송하면 서버가 클라이언트에게 ACK 패킷 응답 후 종료 준비 완료의 의미로 FIN 패킷을 응답해준다. 클라이언트가 ACK 패킷을 전송하고 통신이 종료된다.
서버가 보낸 데이터가 클라이언트에게 아직 도착하지 않았을 때 연결이 종료될 경우 데이터 유실의 위험이 있다. 한번 더 종료 의사를 묻는 과정을 추가하여 안전성을 향상 시킨 것이다.
UDP( User Datagram Protocol )
📌 신호 절차 없이 일방적으로 데이터를 전달하는 비연결형 프로토콜
TCP에 비해 데이터의 신뢰성은 낮지만 속도가 빠르다. 스트리밍 처럼 데이터가 일부 손실되더라도 빠른 데이터 전송이 중요한 경우 사용된다.
HTTP
Hypertext Transfer Protocol
HTTP는 웹 브라우저와 웹 서버 간의 통신에서 HTML 문서, 이미지, 오디오, 비디오 등의 리소스를 전송하기 위해 사용하는 규칙이다. 클라이언트는 서버에게 HTTP 요청 메시지를 전송하고 서버는 클라이언트에게 HTTP 응답 메시지로 응답한다.
HTTP 특징
Stateless
: 무상태성
Connectionless
: 비연결성
서버는 불필요한 연결을 줄이고 많은 클라이언트의 요청을 동시에 처리 가능
HTTPS( Hypertext Transfer Protocol Secure )
HTTPS는 기존 HTTP 프로토콜에서 데이터를 암호화하고 인증하는 과정을 추가하여 보안을 강화한 프로토콜이다. HTTP 프로토콜은 포트 번호 80을 사용하지만 HTTPS는 433번을 사용한다.
HTTP message
HTTP 메세지는 Start Line, Header, Blank Line, Body로 이루어져 있다. 요청 메시지와 응답 메시지에 따라 담기는 내용에 차이가 있다.
HTTP 요청 메세지
Start Line
Header
HTTP 응답 메세지
Start Line
Header
HTTP 외 기타 프로토콜
보안
SSL( Secure Sockets Layer )
📌 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 통신을 보호하고 보안을 유지하기 위해 사용되는 프로토콜
SSL은 1990년 대 초반에 만들어져 현대에는 여러 취약점과 보안 이슈 발생가 발생하여 이를 보완하기 위해 TLS로 대체되었다.
📌 SSL 에서 보안성 강화된 것 !
SSL과 동일한 기능을 하면서 보안성이 더욱 강화한 것이 TLS
이다.