본문 바로가기
이론 공부 내용 정리

네트워크1-GET&POST, 3-way handshake, TCPvsUDP

by mazayong 2021. 5. 17.

 

 

1. HTTP의 GET, POST방식 비교

HTTP 프로토콜 = 인터넷상에서 데이터를 주고받기 위한 서버/클라이언트 모델을 따르는 프로토콜.

<HTTP 메소드 종류>
GET

- URI(URL)이 가진 정보를 검색하기 위해 서버 측에 요청하는 형태

- URL을 이용해 데이터 전달.

- 사용자에게 직접적으로 표시되어서 보안이 중요한 데이터 전송방식에는 적합하지 않음.

- URL길이가 정해져 있어서 많은 양의 정보를 전달하기 어려움.
- 또한 URL형식에 맞지 않는 데이터들은 인코딩되어 전달되어야 함. 
- 브라우저에서 캐싱 가능.

- 크롤러가 접근하여 데이터를 임의로 수정 가능.
- Select적 성향이어서 서버에서 데이터를 가져오는 형태로 많이 쓰임. 
- 서버의 값이나 상태를 변경하는 용도로는 잘 사용되지 않음.

POST

- HTML의 form(or 메세지 본문)으로 데이터 전송할 때 주로 사용. 
- HTTP 헤더 안에 데이터를 넣어서 전달.

- HTTP Request Message에 정보가 포함되어 있음.

- GET방식보다 더 안전함.

- GET방식에 비해 상대적으로 처리 속도가 늦음.(클라이언트에서 데이터를 인코딩하고 서버측에서 디코딩하는 과정이 필요하므로)
- 길이의 제한은 없지만 TIMEOUT이 존재.(메세지 본문에 데이터 포함)
- 브라우저에서 캐싱 불가능.
- 쿼리스트링 데이터를 비롯해 라디오버튼, 텍스트 박스 같은 객체값도 전송이 가능합니다.
(TIMEOUT은 최대 요청 받는 시간으로, Client에서는 페이지를 요청하고 기다리는 시간을 의미한다.) 

--> 나올 수 있는 질문들
게시판의 수정, 삭제를 GET으로 구현하면 어떻게 될까?
-> 글이 수정/삭제될 수 있다.
GET의 사용 예시는 뭐가 있을까?
-> 데이터를 노출시키는 경우에는 개인정보가 포함되지 않을 때 캐싱을 통해 속도를 높이거나 즐겨찾기를 만들 때 사용한다.
(즐겨찾기는 특정 페이지에 대한 정보를 URL에 추가해서 만드는 것이므로)

 

 


2. TCP 3-way Handshake
서로의 통신을 위한 포트를 확인하고 연결하기 위해 3번의 요청/응답 후 연결이 되는 것.

1) 연결 성립, 연결 해제
클라이언트는 서버에 접속을 요청하는 싱크로나이즈 패킷을 보냄.
서버는 클라이언트의 요청 패킷을 받고 클라이언트에게 요청을 수락한다는 ACK(a+1)와 싱크로나이즈 b가 설정된 패킷을 발송.

2) 서버에서 해당 포트는 Listen 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경.
3) 요청을 정상적으로 받았다는 대답(ACK)와 클라이언트도 포트를 열어달라는 싱크로나이즈 패킷을 같이 보내야 함.
4) 클라이언트에서는 SYN+ACK를 받고 ESTABLISHED로 상태를 변경한 후 서버에 ACK를 전송.
5) 마지막으로 ACK를 받은 서버는 상태가 ESTABLISHED로 변경.

이렇게 위와 같이 3번의 통신이 정상적으로 이루어지면, 서로의 포트가 ESTABLISHED상태가 되면서 연결이 되어 데이터를 전송할 수 있게 된다.

(+ACK = 응답 번호 필드가 유효한지 설정할 때 사용. 상대방에게서 패킷을 받았다는 것을 알려줌. 최초의 SYN패킷 이후 전송되는 모든 패킷은 이 플래그가 설정되어야 한다.)
SYN = 연결 설정 요구, 동기화 시퀀스 번호, 양쪽이 보낸 최초의 패킷에만 플래그가 설정되어야 함. TCP에서 세션을 성립할 때 시퀀스 번호를 임의로 설정해서 세션을 연결하는데 사용하여 통신이 시작될 때 가장 먼저 보내는 패킷이다.
+TCP connection은 양방향성이다.(서버에서 클라이언트에게 잘 받았다고 알려줘야 하기 때문에)



3. TCP와 UDP 비교
UDP

- 비연결형 프로토콜. 

- 데이터그램 방식

- 순서 보장 없음

- 수신여부 확인 x

- 1:1, 1:N, N:N통신

- 신뢰성 낮음

- 속도 빠름(수신 여부를 확인하지 않아서)

- 패킷 손실 우려 있음

 

TCP

- 연결형 프로토콜

- 가상 회선 방식

- 전송 순서 보장

- 수신 여부 확인

- 1:1통신

- 신뢰성 높음

- 속도 느림(수신 여부를 확인해서)

- 패킷 손실 우려는 없음.

-> TCP, UDP 모두 네트워크 전송 계층에서 사용하는 프로토콜이며, 포트 번호를 이용해 주소를 지정하고 데이터 오류 검사를 위한 체크섬이 존재한다는 특징이 있다.
TCP는 3-way handshaking과정을 통해 연결을 설정해서 신뢰도를 확보해 순서를 보장하는 대신 속도가 느리고, 

UDP는 순서를 보장하지 않고 신뢰도가 낮은 데이터 전송을 하는 대신, 단방향 데이터 전송으로 속도가 빠르다는 차이가 있다.

TCP는 신뢰도가 필요한 HTTP 통신, 이메일 등에 사용되고 UDP는 빠른 속도가 중요한 스트리밍 서비스에 이용됩니다.


출처
https://m.blog.naver.com/PostView.nhn?blogId=2000sky2&logNo=220619302087&proxyReferer=https:%2F%2Fwww.google.com%2F
https://sinsomi.tistory.com/entry/신입-개발자-면접-GET과-POST-초코더
https://asfirstalways.tistory.com/356