Network 19

[ 프로토콜 ] SSL/TLS 이란? (SSL Handshake)

SSL (Secure Sockets Layer)암호화 기반 인터넷 보안 프로토콜. TLS(Transport Layer Security)프로토콜의 이전 버전이다.인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 1995년 처음으로 개발했다. 버전의 차이는 크지 않으며, 이름이 바뀐 것은 소유권 변경을 나타내기 위한 것이기 때문에 두 용어가 혼합되어 사용되는 경우가 많다.  SSL/TLS 사용 이유원래 웹 상의 데이터는 메시지를 가로채면 누구나 읽을 수 있는 일반 텍스트 형태로 전송되었다.SSL은 사용자 개인 정보를 보호하기 위해 제작되었다. 사용자와 웹 서버 사이를 이동하는 모든 데이터를 암호화하여, 누군가 데이터를 가로채더라도 무작위 문자만 볼 수 있게 한다.또한 SS..

Network 2024.03.26

[ Network ] TCP 헤더 구조

TCP는 여러 개의 필드로 나누어진 20 bytes = 160 bits 헤더를 사용하며, 각 필드의 비트를 0 또는 1로 변경하여 전송하고자 하는 세그먼트의 정보를 나타낸다. 여기서 분홍색 부분에서 보이는 20 bytes라는 것은 아무 옵션도 없는 기본적인 헤더일 때의 용량이고 최대 40 bytes가 더해진 60 bytes 까지도 사용할 수 있다. Source Port & Destination Port 세그먼트의 출발지와 목적지를 나타내는 필드로 각각 16 bits를 할당받는다. 이 때 출발지와 목적지의 주소를 판별하기 위해 IP 주소와 Port 번호가 필요하다. IP 주소는 네트워크 계층에 있는 IP의 헤더에 담기기 때문에 TCP 헤더에는 IP 주소를 나타내는 필드는 없고 Port를 나타내는 필드만 존..

Network 2024.03.24

[ HTTP ] HTTP 상태 코드

상태 코드 란? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational) : 요청이 수신되어 처리중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음. 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함. 2xx (Successful) - 200 OK (요청성공) - 201 Created (요청 성공해서 새로운 리소스가 생성됨.) - 202 Accepted (요청이 접수되었지만 처리가 완료되지 않음.) - 204 No Content (서버가 요청을 성공적으로 ..

Network 2024.03.23

[ HTTP ] API 설계 (Collection VS Store 방식)

회원 관리 시스템에서 POST 기반으로 API를 설계해본다고 가정하자. - 회원 목록 /members -> GET - 회원 등록 /members -> POST - 회원 조회 /members /{id} -> GET - 회원 수정 /members /{id} -> PATCH, PUT, POST - 회원 삭제 /members /{id} ->DELETE POST 방식의 특징 클라이언트는 등록될 리소스의 URI를 모른다. 서버가 새로 등록된 리소스 URI를 생성해준다. 서버가 새로운 회원을 식별하기 위한 URI를 생선한다. Collection 형식 이라고 한다. 서버가 관리하는 리소스 디렉토리이며 여기서는 'members'가 해당된다. 그렇다면 PUT 기반 등록은 어떻게 될까? 파일 관리 시스템에서 PUT 기반으로..

Network 2024.03.22

[ HTTP ] 데이터 전송 방식

클라이언트 -> 서버 데이터 전송 1) 방식 2가지 쿼리 파라미터를 통한 데이터 전송 GET 을 사용함. 메시지 Body를 통한 데이터 전송 POST, PUT, PATCH 사용 2) 상황 4가지 정적 데이터 조회 이미지, 정적 텍스트 문서 조회는 GET을 사용. 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능하다. 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 조회는 GET 사용. GET은 주로 쿼리 파라미터를 사용해서 데이터를 전달한다. HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 시 사용한다. HTML Form 전송은 GET, POST만 지원한다. ..

Network 2024.03.20

[ HTTP ] HTTP API 설계 시 사용하는 메서드 종류

HTTP API 설계 요구사항을 보고 회원 정보 관리 API를 만들어야 하는 상황에 놓였다면? (예시) 회원 정보 관리 API 요구사항 - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 (예시) API URI 설계 단계 URI에서 가장 중요한 것은 리소스 식별 이다. -> '회원' 이라는 리소스만 식별 (members) 그리고 리소스와 해당 리소스를 대상으로 하는 행위(메서드)를 분리 - 회원 목록 조회 : /members - 회원 조회 : /members/{id} - 회원 등록 : /members/{id} - 회원 수정 : /members/{id} - 회원 삭제 : /members/{id} => 구분은 어떻게? HTTP 메서드를 통해서 HTTP 메서드 - GET : 리소스 조..

Network 2024.03.19

[ HTTP ] HTTP 란?

HTTP (HyperTest Transfer Protocol) HTTP 메시지에 모든 것을 전송할 수가 있다. 서버 간에 데이터를 주고받을 때도 대부분 HTTP를 사용한다. - HTML, TEXT - Image, 음성, 영상, 파일 - JSON, XML(API) HTTP 역사 HTTP/0.9 : GET 메서드만 지원, HTTP 헤더 X HTTP/1.0 : 메서드, 헤더 추가 HTTP/1.1 : 가장 많이 사용. 가장 중요한 버전 (TCP 기반) HTTP/2 : 성능개선 HTTP/3 진행중 : TCP 대신에 UDP 사용. 성능 개선에 초점 HTTP 특징 1. 클라이언트-서버 구조 비즈니스 로직이랑 데이터를 서버가 처리하도록 하고, 클라이언트는 UI/UX에 집중하게끔 분리하면 독립적인 진화 가능. - Req..

Network 2024.03.19

[ HTTP ] URI 와 웹브라우저 요청 흐름

URI (Uniform Resource Identifier) - URL: Uniform Resource Locator - 리소스가 있는 위치를 지정 - URN: Uniform Resource Name - 리소스에 이름을 부여 이름을 부여해버리면 거의 찾을 수가 없다. 어떻게 맵핑 되어 있는지도 모르기 때문에. 그래서 거의 URL를 사용한다. URL 전체 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] 예시) https://www.google.com:443/search?q=hello&hl=ko 프로토콜 (https) 호스트명 (www.google.com) 포트 번호 (443) 패스 (/search) 쿼피 파라미터 (q=hello&hl=ko) 1)..

Network 2024.03.18

[ Network ] 인터넷 네트워크

현재 대부분의 웹애플리케이션은 HTTP(Hypertest Transfer Protocol)를 통해 동작한다. HTTP는 요청 및 응답흐름을 사용해 인터넷에서 데이터를 전송하는 애플리케이션 수준의 프로토콜이며, IP 프로토콜 위에서 동작하며 HTTP 요청과 응답은 IP 패킷을 통해 전송된다. 그럼 IP 와 IP 패킷에 대해 자세하게 알아보자. IP ( Internet Protocol ) - 지정한 IP 주소에 데이터 전달 - 패킷(packet)란 통신 단위로 데이터를 전달 IP 패킷 정보 IP 패킷에는 헤더필드와 데이터필드로 나누어진다. 데이터필드에는 TCP, UDP아 같은 상위 계층에서 전달된 PDU 가 삽입되어 있다. 헤어필드에는 패킷을 목적지까지 전송하기 위해 IP 계층에서 필요한 값들이 포함되어 있..

Network 2024.03.17

[ Network ] DNS 패킷 분석 (Wireshark)

Wireshark를 통해 DNS 패킷을 분석해보겠다. 맥북에 wireshark 설치하고 시작하려고 하니 오류부터 뜨는데 쫄지말고 OK 누르고 해결방법 찾으면 된다. 권한 문제니까 빠르게 권한 주고 시작하자. sudo chown /dev/bpf* Wireshark로 DNS 패킷 분석 현재 와이파이에 연결되어 있는 내 IP 주소: 192.168.0.253 패킷 필터링을 사용하여 dns 포트번호인 53 포트를 필터링하였다. (udp.port==53) 패킷 캡처를 시작하고 크롬에 접속해보았다. 첫 번째 패킷: 호스트 "lh3.google.com"의 IPv4 주소를 얻기 위한 DNS A 레코드 조회 두 번째 패킷: 호스트 "lh3.google.com"에 대한 HTTPS 연결을 설정하기 위해 DNS의 AAAA 레코..

Network 2024.03.16