자바 웹 3

Dear·2025년 6월 5일

TIL

목록 보기
36/74

💙 GET 방식

  • 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 “이름”과 “값”이 결합된 스트링 형태로 전달한다.
  • 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.
  • 길이에 제한이 있다. ( = 전송 데이터의 한계가 있다. )
  • Post 방식보다 상대적으로 전송속도가 빠르다.

💙 Post 방식

  • 일정 크기 이상의 데이터를 보내야 할 때 사용한다.
  • 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.
  • 주소창에 전송하는 데이터의 정보가 노출되지 않아 Get 방식에 비해 보안성이 높다.
  • 속도가 Get 방식보다 느리다.
  • 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송 가능하다.

💙 GET과 POST 차이점

  • GET은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용
  • POST는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용
  • GET을 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.
  • POST 방식은 전달되는 데이터가 보이지 않는다.
  • GET 방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.
  • 웹 서버에 많은 데이터를 전달하기 위해서는 POST 방식을 사용하는 것이 좋다.

💙 http

웹 서버 통신을 위한 프로토콜, 80번 포트 사용

💙 https

암호화된 통신을 제공하는 http이므로 느리지만 개인정보 등의 보안 유지를 위해서 사용한다.

💙 소켓 통신(TCP/UDP)

TCP(Transmission Control Protocol)

  • 연결형 프로토콜
  • 높은 신뢰성 보장
  • 데이터 흐름 제어, 혼잡 제어
  • 정이중, 점대점 서비스(양방향 송수신 서비스)

UDP(User Datagram Protocol)

  • 비연결형 프로토콜
  • 데이터를 데이터그램 단위로 전송한다.
  • 신뢰성이 낮다
  • 데이터의 전송 순서가 바뀔 수 있다
  • 데이터 수신 여부 확인 한함
  • TCP보다 전송속도가 빠르다

💙 TCP handshake

TCP가 가상회선을 만들고 제거하는 과정

💙 TCP 3 way handshake

TCP 3 way handshake는 가상회선을 수립하는 단계이다. 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정이다.
SYN, ACK 패킷을 주고받으며, 임의의 난수로 SYN 플래그를 전송하고, ACK 플래그에는 1을 더한값을 전송한다.

정확한 순서는 SYN(n) → ACK(n + 1), SYN(m) → ACK(m + 1)

클라이언트가 서버에게 SYN
서버는 SYN/ACK를 반환하여 연결 수락
클라이언트가 ACK를 보내어 연결 확립

이후 데이터 전송이 이루어질때에도 ACK를 통해 안전한 전송을 보낸다.

SYN(Synchronize)

TCP 연결을 설정하기 위한 초기 단계로, 클라이언트가 서버에게 TCP 연결을 요청하는 데 사용

클라이언트가 SYN 패킷을 보내면, 이것은 클라이언트가 연결을 설정하고자 한다는 신호이다.

SYN 패킷은 TCP 연결 설정 시에 가장 처음 보내는 패킷이다.

ACK(Acknowledgment)

ACK는 패킷의 수신 확인을 나타내는데, 이를 통해 송신자가 데이터를 안전하게 보내는 것을 확인한다.

서버가 클라이언트의 SYN 요청을 수신한 후에 보내는 패킷으로, 서버는 클라이언트의 요청을 수락하고 연결을 설정한다.

ACK는 데이터를 전송하는 과정에서도 사용되며, 수신 측에서 데이터 패킷을 정상적으로 수신했다는 것을 송신 측에 알려준다.

💙 TCP 4 way handshake

TCP 연결을 해제하는 단계로, 클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송하고 최종적으로 연결이 해제된다.

단, 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기하는데, 혹시나 패킷이 나중에 도착할 수 있기 때문이다.

💙 SSL Handshake

클라이언트는 TCP 3 way handshake를 수행한 후 Client Hello를 전송한다. 서버는 인증서를 보낸다.

클라이언트는 받은 인증서를 신뢰하기 위해서 등록된 인증기관인지 확인한다. 이 인증서는 인증기관의 개인키로 암호화되어있고, 공개키로 검증할 수 있다.(브라우저에 내장) 클라이언트는 사이트의 정보와, 서버의 공개키를 얻을 수 있다.

서버의 공개키로 통신에 사용할 비밀키를 암호화해서 서버에 보낸다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키로 암호화되어 통신한다.

💙 URL

www.google.com/search
서버 상의 파일들의 위치

💙 URI

www.google.com/search?q=ui
인터넷 사의 자원을 식별하기 위한 문자 구현

🤍 회고

오늘 학습한 내용은 기존에 여러 번 실습하며 익혔던 메소드들과 달리 암기 성향이 강한 개념들이라 기억에 오래 남을지 걱정이 되었다.
특히 Handshake 개념이 추상적으로 느껴져 이미지 자료들을 참고하며 이해하려 노력했다.
앞으로도 이런 개념은 시각적 자료와 함께 반복 학습이 필요할 것 같다.

profile
친애하는 개발자

0개의 댓글