μ 체 κΈ (46) μΈλ€μΌν 리μ€νΈν TLS 1.2 Handshake λμ κ³Όμ + HTTPS κ°μ ByteByteGo : SSL, TLS, HTTPS Explained μμμ 보며 μ 리ν κΈμ λλ€. HTTPS κ°μTLS 1.2 Handshake λμ κ³Όμ μ€λͺ μ μμ λͺ κ°μ§ κ°λ μ μκ°ν©λλ€. βΆ HTTPS : HTTP νλ‘ν μ½μ TLS/SSL λ‘ μνΈνν νλ‘ν μ½μ λλ€. βΆ SSL/TLS : μνΈν νλ‘ν μ½λ‘, μΈν°λ·μ ν΅ν΄ μ μ‘λλ λ°μ΄ν°λ₯Ό 보νΈν©λλ€. SSL μ΄ μ΅μ΄μ μνΈν νλ‘ν μ½μ΄λ©°, 보μμ΄ λ ν₯μλκ³ , λ°μ ν κ²μ΄ TLS νλ‘ν μ½μ λλ€. βΆ λμΉν€ μνΈν λ°©μμνΈν/볡νΈνμ κ°μ ν€λ₯Ό μ¬μ©νλ μλ°©ν₯ μνΈ λ°©μμ λλ€.κ°μ ν€λ₯Ό μ¬μ©νκΈ° λλ¬Έμ 미리 μμ ν ν΅λ‘λ₯Ό ν΅ν΄ ν€κ° κ΅νλμ΄μΌ ν©λλ€.κ°μ ν€λ₯Ό μ¬μ©νκΈ° λλ¬Έμ μνΈν μλκ° λΉ¨λΌμ λμ©λ λ°μ΄ν° μνΈ μ²λ¦¬μ μ¬μ©λ©λλ€.κ°μ .. HTTP/1.0 → HTTP/1.1 → HTTP/2.0 → HTTP/3.0 λ²μ λ³ μ°¨μ΄λ₯Ό μ΄ν΄νκΈ° HTTP λ²μ λ§λ€ μ΄λ€ λ¨μ μ΄ μμκ³ , λ€μ λ²μ μμ κ·Έ λ¨μ μ μ΄λ»κ² ν΄κ²°νλμ§λ₯Ό μκ°νκ³ μ ν©λλ€.HTTP/1.0HTTP/1.0 μ μλ²μ ν΄λΌμ΄μΈνΈκ°μ Connection μ μ§μνμ§ μμ΅λλ€.μ¦, ν΄λΌμ΄μΈνΈκ° μλ²μ Connection μ λ§ΊκΈ° μν΄ DNS μ‘°ν, TCP 3-way handshake, SSL/TLS handshake κ°μ΄ λ€νΈμν¬ μ§μ° μκ°μ λ리λ νμλ₯Ό 1κ°μ μμ² λ§λ€ λ°λ³΅μ μΌλ‘ νλ€λ κ²μ΄μμ΅λλ€. μ΄λ λ§€μ° λΆνμν νμμ΄κΈ° λλ¬Έμ, HTTP/1.1 μ μ΄λ₯Ό μ΅μ ν νκ² λ©λλ€. HTTP/1.1βΆ HTTP/1.1 μ κΈ°λ₯ : Keep-Alive κ·Έλμ, HTTP/1.1 λΆν° 맀 μμ²λ§λ€ Connection μ λ§Ίμ§ μκΈ° μν΄ μλ²μ ν΄λΌμ΄μΈνΈκ°μ Connection μ K.. TCP/IPμ 'ν¨ν· κ΅ν λ°©μ' μ°λ¨Ή νκΈ° λ Όλ¦¬μ μΈ κ²κ³Ό 물리μ μΈ κ²μ ꡬλΆνκ³ μ 물리μ μΈ κ²μ 'νλμ¨μ΄/물리'λ λ¨μ΄λ₯Ό λΆμ΄κ³ λ Όλ¦¬μ μ΄λ©΄μ 물리μ μΈ κ²μ 'λ€νΈμν¬'λ λ¨μ΄λ₯Ό λΆμμ΅λλ€.OSI 7κ³μΈ΅κ³Ό TCP/IP λͺ¨λΈ, κ° κ³μΈ΅μ λ°μ΄ν° λ¨μ μ μλ³μ, λ€νΈμν¬/νλμ¨μ΄ μ₯μΉλ€μ 곡λΆνμ¬ λ°μ΄ν°λ₯Ό μ μ‘νλ λ°©λ²μ μ€λͺ ν΄ λ³΄κ² μ΅λλ€. λ€μ΄κ°κΈ°μ μμ, 'ν¨ν·', 'μΈκ·Έλ¨ΌνΈ', 'νλ μ' μ κ°μ λ°μ΄ν° λ¨μμ λν΄ λͺ¨λ₯΄μ λ€λ©΄ λλν κ°λ°μλμ 'λ€νΈμν¬ λ°μ΄ν° λ¨μ μ 리' μμμ λ³Έ νμ κΈμ μ½λ κ²μ κΆμ₯ν©λλ€. TCP/IPμ ν¨ν· κ΅ν λ°©μκ°λ¨νκ² λ§νλ©΄ λ°μ΄ν°λ₯Ό μ¬λ¬ κ°μ ν¨ν·μΌλ‘ λΆν νμ¬ μ μ‘ν ν, μμ νλ κ³³μμ ν¨ν·μ μ¬μ‘°λ¦½νλ λ°©μμΈ ν¨ν· κ΅ν λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν©λλ€. νμ§λ§, λ€νΈμν¬λ μ΄λ κ² κ°λ¨νμ§κ° μμ΅λλ€.O.. [λ‘κ·ΈμΈ λ° νμκ°μ ] μ¬μ©μ νΈμμ±μ κ³ λ €ν μ΄λ©μΌ μΈμ¦ κΈ°λ° λ‘κ·ΈμΈ/νμκ°μ μκ° μꡬμ¬ν μκ°Airbnb μ¬μ΄νΈμμ λ‘κ·ΈμΈνκΈ° μν΄ μ΄λ©μΌμ μ λ ₯νμ λμ΄λ©μΌμ΄ μ‘΄μ¬νλ€λ©΄ λΉλ°λ²νΈλ₯Ό μ λ ₯νλ μ°½μ λμμ£Όκ³ ,μ΄λ©μΌμ΄ μ‘΄μ¬νμ§ μλλ€λ©΄ ν΄λΉ μ΄λ©μΌμ κ°μ§κ³ νμκ°μ μ νλλ‘ μ§νμν΅λλ€.κ³ λ―Ό ν¬μΈνΈ1. Aμ¬μ©μμ Bμ¬μ©μκ° λμμ κ°μ μ΄λ©μΌλ‘ νμκ°μ μ ν λ, λꡬμ μ΄λ©μΌμ μ ν¨νκ² λ³Ό κ²μΈκ°? μ²μμλ λ‘κ·ΈμΈνκΈ° μν΄ μ΄λ©μΌμ λ¨Όμ μ λ ₯ν μ¬μ©μλ§ μ²λ¦¬λμΌ νλ€ μκ°νμ΅λλ€.κ·Έλμ λμμ μ΄λ©μΌμ μ λ ₯νμ λμ μΌμ΄μ€λ₯Ό μ²λ¦¬νκΈ° μν΄ μ±κΈ μ€λ λμΈ Redis μ λ¨Όμ λ€μ΄μ¨ μ΄λ©μΌμ μ μ₯ ν μ μμ§λ§, μ΄νμ μμ²ν μ¬μ©μ μ μ₯μμλ νμκ°μ νμ§λ μμλλ° λΉλ°λ²νΈλ₯Ό μ λ ₯νλ μ°½μ λμμ£Όλ κ²μ μ¬μ©μλ‘ νμ¬κΈ λΆνΈνλ€κ³ νλ¨νμ΅λλ€. κ·Έλ¬λ, λ©μΌ μλ²μ APIλ₯Ό μ¬μ©νλ€λ©΄.. [νΈλ¬λΈ μν ] jakarta.mail.internet.addressexception: local address contains control or whitespace ꡬκΈλ§ ν΄λ λμ€μ§ μλ μλ¬λ₯Ό ν΄κ²°νλ κ³Όμ μ μκ°νλ©°, μ λ°μνκ³ μ΄λ»κ² ν΄κ²°νλμ§ μκ°νλ κΈμ λλ€.SMTP κΈ°λ₯μ λν΄ μ€λͺ νμ§ μμ΅λλ€.μλ‘ μμ΄λΉμ€λΉμ νμκ°μ ν λ, νμμ΄ μ λ ₯ν μ΄λ©μΌμ΄ μ μ μ΄λ©μΌμΈμ§ νμΈνκ³ μ μΈμ¦λ²νΈλ₯Ό 보λ΄κ³ μ νμ΅λλ€.κ·Έλμ, μλμ κ°μ μ½λλ‘ λ€μ΄λ² μλ²μ λ©μΌμ 보λμΌλ, `jakarta.mail.internet.addressexception: local address contains control or whitespace` μλ¬κ° javaMailSender.send(message) μμ λ°μνμμ΅λλ€.public void sendVerificationEmail(String memberEmail) { try { SimpleMai.. μλμ°, WSL, JVM μΌλ‘ μκ² μμ보λ νκ²½λ³μμ νμΌμμ€ν βμλ‘ μ μ΄μ체μ λ₯Ό λ¨Όμ μκ°ν©λλ€. μ μ μ΄μ체μ λ Window μ΄λ©°, μλμ°μμ μ 곡ν΄μ£Όλ wsl2 λ₯Ό ν΅ν΄ Ubuntu λ μ¬μ©νκ³ μμ΅λλ€. μ΄ νκ²½μμ μ½λμ€μΏΌλμ 리λ μ€ κ°μ νκ²½ λ° ν¬λ‘€λ§ λ―Έμ μ μ§ννκ³ μ νμ΅λλ€. κ·Έλμ, μ μλμ°μμ IDEλ‘ ν¬λ‘€λ§ μ½λλ₯Ό μμ±ν νμ wsl μ μ μν΄μ Ubuntu νκ²½μμ crontab μ μ¬μ©ν΄μ ν¬λ‘€λ§μ μλν ν κ³νμ΄μκ³ , ν¬λ‘€λ§ λΌμ΄λΈλ¬λ¦¬λ μ λ λμμ μ¬μ©νκ³ μ νμ΅λλ€. κ·Έλ κ² λ―Έμ μ μ§ννλ©° λ€μκ³Ό μλ¬Έμ΄ μκ²Όκ³ , μλ¬Έμ λν λ΅μ μ°Ύμκ°λ©° μκ² λ κ²μ 곡μ νκ³ μ ν©λλ€.1. μλμ°μ wsl μ νμΌμμ€ν μ 곡μ νμ§λ§, νκ²½λ³μλ μ μλ‘ κ³΅μ νμ§ μλ κ²μΈμ§ ?? 2. OS μ νκ²½λ³μλ₯Ό λ±λ‘νλ κ²μ΄λ Java λ‘ set.. [νΈλ¬λΈ μν ] 20λ§ λλ―Έ λ°μ΄ν° μ½μ μ csvνμΌμ μ΄μ©ν΄μ DB connection timeout → 7μ΄λ‘ μ€μ΄κΈ° βμλ‘ μ½λμ€μΏΌλ μμ΄λΉμ€λΉ ν΄λ‘ μ½λ© νλ‘μ νΈ μ€ μ±λ₯ ν μ€νΈλ₯Ό νκ³ μΆμκ³ ,μ΄λ₯Ό μν΄ λ€λμ μμ, μμ½, νμμ λλ―Έ λ°μ΄ν°λ₯Ό λ§λ€κ³ μ νμμ΅λλ€. λλ―Έ λ°μ΄ν°λ₯Ό μμ 20λ§κ°, μμ½ 100λ§κ°, νμ 1λ§λͺ μ λ§λ€κ³ μ νμμ΅λλ€.μ΄ μ€, μμ 20λ§κ°λ₯Ό λ§λλ κ³Όμ μμ μκΈ΄ μΌμ μκ°ν©λλ€. 20λ§κ° μμ λ°μ΄ν°λ₯Ό Java μ½λλ‘ μμ 1κ°λ§λ€ INSERT INTO 쿼리λ₯Ό DBμ λ λ Έλλ DB connection timeout λ¬Έμ λ₯Ό λ§μ£Όνμ΅λλ€. - κ³ λ €ν λ°©μMySQLμ λ μ½λλ ν μ΄λΈ λ¨μμ νμΌλ‘ μ μ₯λλ€λ μ μ μ°©μν csvνμΌ μ¬μ©λλ μ½μ μ νΉνλ κΈ°μ μΈ Spring Batch - 2κ°μ§ μ΄μ λ‘ csvνμΌμ μ΄μ©νκΈΈ μ ννμ΅λλ€.νλ‘μ νΈ λ¨μ 1μ£Ό λμ μ±λ₯ ν μ€νΈλ₯Ό ν΄μΌλλ€λ μ λλ―Έ .. [λμμ± μ μ΄] μ λν¬ μ μ½μ‘°κ±΄μ νμ©ν΄ 1 건μ μμ½λ§ μ μ₯ βμꡬμ¬νμ½λμ€μΏΌλμ Airbnb νλ‘μ νΈ μ€κ°μ μμμ μ¬λ A μ μ¬λ B κ° λμμ μμ½μ μμ²ν κ²½μ°, ν 건μ μμ½λ§ μ±κ³΅ν΄μΌ ν©λλ€.(κ°μ μμλ₯Ό μ¬λ Aμ μ¬λ Bκ° λμμ μ¬μ©νλ©΄ μλλκΉ!)βκ³ λ―Όκ·Έλμ, λμμ μμ½ μμ²μ λ§κΈ° μν΄λΉκ΄μ λ½λκ΄μ λ½DBμ μ λν¬ μ μ½μ‘°κ±΄μ κ³ λ―Όνκ² λμμ΅λλ€.βν΄κ²° κ³Όμ μμ½μ΄ μ μ₯λλ μ½λλ λ€μκ³Ό κ°μ΅λλ€.@Transactionalpublic BookingResponse create(BookingSaveRequest request) { // μμ²ν μμ½μ΄ κΈ°μ‘΄ μμ½μ μΌμ κ³Ό μ€λ³΅λλμ§ νμΈνλ λ‘μ§ Long bookedStayCount = bookingRepository.countBookedStay(request.getStayId(), re.. μ΄μ 1 2 3 4 5 6 λ€μ