목록전체 글 (119)
철학과 학생의 개발자 도전기

1. TLS/SSL이란 SSL(Secure Sockets Layer)은 TLS(Transport Layer Security)의 과거 명칭이다. TLS는 안전한 인터넷 통신을 위한 암호화 및 인증 프로토콜이다. Certificate Authority(CA)라 불리는 서드 파티로부터 서버와 클라이언트의 인증을 하는데 사용된다. 2. TLS Handshake TLS Handshake는 TLS 암호화를 사용하는 통신 세션을 실행하는 프로세스이다. TLS Handshake 중에, 통신하는 양측에서는 메시지를 교환하여 서로를 인식하고 검증하며 사용할 암호화 알고리즘을 구성하고 세션 키에 합의한다. 이는 HTTPS 작동 원리의 근간이 된다. TLS Handshake 과정 RSA 키 교환 알고리즘 TLS Handsha..
1. HTTP (Hypertext Transfer Protocol) 1) 특징 HTTP는 응용 계층에서 두 애플리케이션이 데이터를 주고 받기 위한 규약이다. 서버-클라이언트 모델로 구성되며, 요청과 응답으로 동작한다. 예시) 웹 브라우저(클라이언트)가 서버에 HTML 혹은 JSON을 요청하는 경우 80번 포트를 기본으로 사용한다. 평문으로 데이터를 주고 받기 때문에, 통신 내용을 제3자가 조회할 수 있다. 2) 구조 TCP/IP 위에서 동작한다. Stateless하게 통신한다. Method, Path, Header, Body, Status Code 등으로 구성된다. 3) 요청 메소드 종류 GET : 데이터를 조회할 때 사용 POST : 데이터를 생성할 때 사용 PUT : 데이터를 수정할 할 때 사용 DE..

0. 개요 기밀성(Confidentiality): 인가되지 않은 자는 정보를 확인하지 못하도록 하며, 정보가 유출되더라도 평문으로 해독할 수 없고 변조 또는 위조하지 못하도록 기밀을 유지한다. 무결성(Integrity): 인가 되지 않은 자로 부터 위조 또는 변조가 발생하지 않았는지 확인 인증(Authentication): 수신 받은 메시지가 송신자 본인이라는 것을 확인하고 증명한다. 부인 방지(Non-repudiation): 메시지를 보낸 사람이 보낸 사실을 부인하거나, 받은 사람이 받은 사실을 부인할 경우 증명하는 기술을 말한다. 대칭키 알고리즘은 기밀성을 제공하고, 무결성/인증/부인방지를 제공하지 않는다. 공개키 알고리즘은 기밀성/인증/부인방지 기능을 제공한다. 여기서 무결성은 대칭키, 공개키 알고..

1. TCP와 패킷 이메일, 채팅 메시지, 금융 거래 내용 등의 데이터를 전송하는 기본 단위가 패킷이다. 하나의 데이터는 여러 개의 패킷으로 쪼개져서 전송된다. TCP는 신뢰성을 보장하기 위해, 각 패킷에 번호를 부여하여 누락을 확인하고 순서에 맞게 재조립한다. TCP는 신뢰성을 보장하기 위해, 흐름제어/혼잡제어/오류제어 기법을 사용한다. 2 . 흐름 제어 송신자와 수신자 사이의 데이터 처리 속도 차이로 인해 수신자 버퍼의 오버플로우가 발생할 수 있다. 이것을 방지하는 기법이 흐름제어다. 수신자가 감당할 수 있는 속도로 데이터를 보내도록 송신자의 데이터 전송 속도를 제어한다. 1) 정지 - 대기 패킷을 전송하고 확인 응답을 받은 후에 다음 패킷을 전송한다. 속도가 느리다는 단점이 있다. 2) 슬라이딩 ..

TCP란 연결성: 연결을 성공한 후에 통신 데이터의 경계를 구분하지 않음 (byte stream service) 데이터의 전송 순서를 보장 (데이터의 순서유지를 위해 각 바이트마다 번호 부여) 신뢰성 있는 데이터를 전송 (Sequence Number, Ack Number) Sequence Number : TCP 세그먼트의 연속된 데이터 번호 Ack Number : 상대방으로부터 받아야하는 다음 TCP 세그먼트 데이터 번호 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(패킷 수가 과도하게 증가하는 것 방지) 연결의 설정(3-way handshaking), 해제(4-way handshacking) 3-Way Handshake 데이터를 전송하기 전에 클라이언트와 서버를 연결하는 과정 State 종류 ..
네트워크 계층 데이터를 최종 목적지까지 전달하기 위한 계층 IP 주소를 부여해 네트워크 호스트의 논리 주소를 지정 데이터를 전송하는 최적 경로를 선택 (라우팅) IP (Internet Protocol) 데이터 단위: 데이터 그램 비신뢰성: 목적지에 성공적으로 도달하는 것을 보장하지 않음 비연결형: 전달되는 데이터그램에 대한 상태정보를 유지하지 않음 주소를 지정 경로를 설정 ICMP (Internet Control Message Protocol) 인터넷 그룹 관리를 위한 프로토콜 신뢰성이 없는 IP를 보조하기 위해 사용 네트워크의 연결성을 확인하고, 오류를 보고 받음 Ping 네트워크 소통 상태를 확인하는 명령 패킷이 올바르게 도착하여 응답이 발생하는지 확인 Traceroute 네트워크 경로를 조사하기 ..
4주차 과제 크리스마스 프로모션 기능을 구현하는 과제였다. 요구사항이 더 복잡하기 때문에 클래스를 분리하는 것도 까다로웠다. 하지만 어려운 만큼 OOP에 대해 숙달하는 좋은 훈련이 되었다. https://github.com/happyhun/java-christmas-6-happyhun GitHub - happyhun/java-christmas-6-happyhun Contribute to happyhun/java-christmas-6-happyhun development by creating an account on GitHub. github.com 회고 요구사항 분석 요구사항이 길고, 제약 조건이 많아지면서 분석에 어려움을 겪었다. 하지만 쉬운 작업부터 분리해 내고 어려운 작업을 분석하니 구현할 기능을 ..

UDP (User Datagram Protocl) 전송 계층에서 사용하는 프로토콜 신뢰성이 낮지만 빠른 데이터 전송 가능 데이터그램 방식으로 패킷 전송 특징 송신부와 수신부의 연결이 보장되지 않는 비연결형 서비스 패킷이 서로 다른 회선으로 교환될 수 있는 데이터그램 패킷 교환 방식 전달한 패킷 순서와 전달받은 패킷 순서가 다를 수 있음 패킷의 수신 여부를 확인하지 않음 오류 검출 최소한의 신뢰성은 보장 체크섬 방식으로 오류 검출 송신부가 헤더와 바디 데이터를 이용해 체크섬 값을 만들어서 함께 전송 수신부는 모든 값을 더해서 전부 1이 나오는지 확인 1만 나오면 정상으로 취급하기 때문에 완전한 오류 검출은 어려움 UDP header 속도를 위해 간결한 헤더 지님 출발지와 목적지, 길이, 체크섬 등 QUIC..