Home Network
Post
Cancel

Network

TCP / UDP

TCP : 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정한다. 데이터가 유실될 경우 재전송을 통해 복구하고, 순서가 바뀌더라도 순서 번호를 이용하여 제대로 맞춰 전달한다. 그래서 높은 신뢰성을 보장한다. 또 데이터의 흐름과 혼잡을 제어한다. 단점으로는 비교적 속도가 느리다는 점이 있다.

UDP : 비연결형 서비스로 전송한 데이터가 유실될 수 있고, 순서가 바뀌어 도착할 수 있다. 그래서 신뢰성이 떨어진다는 단점을 갖고 있으나 수신여부를 확인하지 않기 때문에 속도가 빠르다.

따라서 TCP는 신뢰성이 중요한 파일 교환 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용된다.

참고

프로토콜

프로토콜은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다.

OSI 7계층

프로토콜을 기능별로 나눈 것으로 각 계층은 하위 계층의 기능만 이용하고, 상위 계층에게 기능을 제공한다.

  1. 물리 계층 : 네트워크 데이터가 전송되는 물리적인 매체이다. 0과 1의 비트열로 전기적 신호 상태로 이루어져 있다.
  2. 데이터 링크 계층 : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
  3. 네트워크 계층 : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
  4. 전송 계층 : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
  5. 세션 계층 : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
  6. 표현 계층 : 데이터의 형식을 정의하는 계층
  7. 응용 계층 : 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층

TCP/IP

TCP/IP는 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약이다. 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받은 순서가 다를 수 있는데 TCP가 데이터 전달을 보증하고, 보낸 순서로 받을 수 있게 해준다.

참고

HTTP / HTTPS

Hypertext Transfer Protocol : 웹 서버와 웹 브라우저 사이에 문서를 전송하기 위한 통신 규약이다. 기본 포트인 80번 포트를 사용하며, 정보를 단순 텍스트로 주고받기 때문에 데이터가 쉽게 도난당할 수 있다. 상태를 갖지 않은 프로토콜로 Method, Path, Version, Headers, Body로 구성된다. 클라이언트 요청을 서버에 보내고 서버는 클라이언트에게 적절한 응답을 주고 연결을 끊는 특성이 있다.(Connectionless 비연결지향) 1.1버전에서 커넥션을 계속 유지하고 요청을 재활용하는 기능이 추가됨 (keep-alive), 또 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성을 가지고 있다.(Stateless 상태 없음)

Hypertext Transfer Protocol Secure : 기본 골격은 HTTP와 거의 동일하지만 SSL 보안 소켓 계층을 사용함으로써 서버와 브라우저 사이에 안전하게 암호화(대칭키 암호화, 비대칭키 암호화 모두 사용)된 연결을 만들어주고, 정보가 도난당하는 것을 막아준다. HTTP와 다르게 443번 포트를 사용한다. SSL 인증서로 정보를 암호화 하고, TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지한다. TLS는 데이터 무결성을 제공하여 데이터가 전송 중 수정이나 손상되는 것을 방지한다.

참고

참고

대칭키 암호화 / 비대칭키 암호화

대칭키 암호화 : 암호화 / 복호화에 사용하는 키가 동일한 암호화 방식이다. 대표적인 알고리즘으로 DES, AES, SEED 등이 있고, 비대칭키 암호화 방식에 비해 속도가 빠르다는 장점이 있지만 키를 교환하는 과정에서 키가 탈취되거나 사용자가 증가하면 키를 관리하는데 어려울 수 있다는 단점이 있다.

비대칭키 암호화 : 공개키 암호화 방식이라고도 부르며 암호화/복호화에 사용하는 키가 서로 다르다. 따라서 송수신자 모두 한 쌍의 키(개인키, 공개키)를 갖고 있게 된다. 대칭키와 다르게 키가 공개되어 있어 키를 교환할 필요가 없고, 개인키를 가지고 있는 수신자만이 데이터를 복호화할 수 있어 일종의 인증 기능도 제공한다는 장점이 있지만 속도가 느리다는 단점이 있다. 대표적인 알고리즘으로 RSA, DSA, ECC 등

**개인키-사용자만이 가지고 있는 키 / 공개키-모든 사람이 접근 가능한 키

참고

HTTP Method

  • GET : 주로 데이터를 읽거나 검색할 때 사용되는 메소드이다. 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다. 같은 요청을 여러번 보내도 항상 같은 응답을 받는다.(Idempotence 하다.)
  • POST : 주로 새로운 리소스를 생성할 때 사용된다. post요청은 Idempotence 하지 않다.(post 요청 반복시 같은 결과물이 나오는 것을 보장하지 않음)
  • PUT : 지정된 데이터를 전부 수정할 때 사용된다. Idempotence 하다. / PATCH : 정보의 일부분이 수정된다. Idempotence하지 않다.
  • DELETE : 지정된 리소스를 삭제한다.

Idempotent : 멱등성이란 뜻으로 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.

참고

HTTP1.1 / HTTP2

HTTP1.1은 기본적으로 연결당 하나의 요청과 응답을 처리하기 때문에 동시전송이 불가능하고, 요청과 응답이 순차적으로 이루어진다. 따라서 단점으로 1)HOL Blocking 특정 응답의 지연, 2)RTT 증가, 3)무거운 Header 구조

HTTP2는 성능뿐만 아니라 속도면에서도 월등하다. Multiplexed Streams의 특징을 갖고 있어 한 커넥션으로 동시에 여러 개의 메세지를 주고 받을 수 있고 응답은 순서에 상관없이 stream으로 주고 받는다.

참고1 참고2

GET / POST

GET은 데이터를 읽거나 검색할 때 사용하는 메서드로 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되고 이를 ‘쿼리 스트링’이라 부른다. 파라미터에 내용이 URL을 통해 노출되기 때문에 민감한 데이터를 다룰 때는 GET 방식을 사용하면 안 된다. 또 데이터 길이에 제한이 있고, 요청이 브라우저 기록에 남는다.

POST는 요청을 전송시 HTTP 메세지의 Body에 담아서 전송한다. body는 길이의 제한이 없이 데이터를 전송할 수 있어 GET 방식과 달리 대용량 데이터를 전송할 수 있다. body로 전송되어 내용이 눈에 보이지 않아 GET 방식 보다는 보안적인 면에서 안전하다고 할 수 있지만 암호화되어 있지 않기 때문에 개발자 도구를 통해 내용을 확인할 수 있다.

Cookie : 정보를 유지할 수 없는 성격을 가진 HTTP의 단점을 해결하기 위해 쿠키라는 개념이 도입되었다. 쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 클라이언트의 상태 정보를 로컬에 저장했다가 요청할 때 참조된다. 이로인해 탈취, 변조될 위험이 있어 보안이 취약하다. 서버측에서 만료날짜/시간을 지정하여 정해진 시간 동안 데이터를 유지할 수 있고, 프로세스가 종료되더라도 특정 시간까지 유효하므로 지속된다.

Session : 서버에 클라이언트의 상태 정보를 저장하는 기술로 논리적인 연결을 세션이라고 한다. 클라이언트 정보가 서버에 저장되어 있어 비교적 안전하다. 또 세션은 브라우저를 종료한 경우 사라진다. 서버의 자원을 사용하기 때문에 사용자가 몰리는 경우 서버에 부하를 줄 수 있다.

참고1 참고2

도메인

ip는 사람이 이해하고 기억하기 어렵기 때문에 각 ip에 이름을 부여할 수 있는데 이것을 도메인이라고 한다.

‘인터넷상에서 개인이 소유하고 있는 인터넷 주소’

URL / URI / URN

URI : 통합 자원 식별자의 줄임말이다. URI의 하위 개념으로 URL과 URN이 있다.

URL : 프로토콜을 포함하고, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. 일반적으로 사이트 도메인을 자주 의미한다.

URN : 이름으로 리소스를 특정하는 URI이다. 프로토콜을 포함하지 않고, 해당 자원의 이름을 의미한다.

참고1 참고2

DNS

사용자는 도메인 이름을 통해 온라인으로 정보를 액세스 한다. 웹 브라우저는 ip 주소를 통해 상호작용 한다. 이에 따라 DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환한다.

참고

웹 동작방식

  1. 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력 (예. www.naver.com)
  2. 입력한 URL 주소 중 도메인 부분을 DNS 서버에서 검색한다.
  3. 해당 도메인 이름에 해당하는 IP주소를 찾아 사용자가 입력한 URL 정보와 함께 전달
  4. URL 정보와 IP 주소는 HTTP 프로토콜을 통해 요청 메시지 생성 -> TCP 프로토콜을 사용하여 해당 IP 주소의 컴퓨터로 전송
  5. 도착한 HTTP 요청 메시지는 웹 페이지 URL 정보로 변환
  6. 웹 서버는 도착한 웹페이지 URL 정보에 해당하는 데이터 검색
  7. HTTP 프로토콜을 사용하여 응답 메시지 생성 -> TCP 프로토콜을 사용하여 원래 컴퓨터로 전송됨
  8. 도착한 응답 메시지는 HTTP를 사용하여 웹 페이지 데이터로 변환
  9. 변환된 웹 페이지 데이터는 웹 브라우저에 의해 사용자가 볼 수 있음

참고

세션 기반 인증 / 토큰 기반 인증

세션 기반 인증 : 서버 기반 인증 방식으로 서버 측에서 세션에 사용자들의 정보를 저장해두고 서비스를 제공할 때 사용한다.

토큰 기반 인증 : 인증 받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록하여 유효성 검사를 한다 토큰 기반 방식은 사용자의 인증 정보를 서버나 세션에 유지하지 않고, 클라이언트에서 들어오는 요청만으로 작업을 처리한다. 또 상태를 유지하이 않으므로 stateless한 구조를 갖는다.

참고

JWT 토큰

인터넷 표준 인증 방식으로 인증에 필요한 정보들을 토큰에 담아 암호화시켜 사용하는 토큰이다. JWT는 서명된 토큰이다. Json 형태로 Header, Payload, Signature의 3부분으로 이루어 진다. 각 부분은 . 점으로 구분한다.

공인 IP / 사설 IP

공인 IP : 전 세계에서 유일한 IP 주소를 갖는다. 공인 IP 주소는 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터 접근이 가능하다. 따라서 방화벽 등 보안 프로그램을 설치할 필요가 있다.

사설 IP : 일반 가정이나 회사내 등에 할당된 네트워크의 IP 주소로 로컬 IP, 가상 IP라고도 한다.

참고

3 Way-Handshake

TCP에서 장치들 사이에 논리적인 접속을 성립하기 위해 사용한다. 통신을 하는 장치간에 서로 연결이 잘 되어있는지 확인하는 과정, 방법이다. 3번 신호를 주고 받는다고 해서 3 Way-Handshake라 하고, seq 넘버를 보내서 순서가 뒤바뀌지 않도록 해준다.

SSL

SSL은 암호화 기반 인터넷 보안 프로토콜로 개인정보 보호, 인증, 데이터 무결성을 보장한다. 대표적으로 HTTPS가 있다.

IP 주소 / HOST

통신을 하려고 할 때 데이터를 보내고 받는 고유한 주소를 IP라고 한다. HOST는 IP주소를 갖는 시스템이라 할 수 있다. 네트워크에 연결되어 있는 컴퓨터들을 host라 칭하고, 통신을 할 때 목적지와 출발지가 없으면 데이터를 주고 받을 수 없다. 이때 IP라는 고유한 주소를 통해 지정할 수 있다.

참고

CACHE

사용자가 웹사이트에 접속시 정적 컨텐츠를 특정 위치에 저장해두고, 필요할 때 매번 서버에 요청하는 것이 아닌 특정 위치에 저장해둔 데이터를 불러옴으로써 응답시간을 줄이고, 트래픽 감소 효과를 볼 수 있다.

참고

This post is licensed under CC BY 4.0 by the author.

Java

Baekjoon_9498(부제:BufferedReader, BufferedWriter)