# 4-way Handshake

28개의 포스트
post-thumbnail

커넥션 관리

1. TCP 커녁션 기본적으로 클라이언트와 서버가 HTTP통신을 하려면 그 전에 TCP Connection(연결)이 되어야 합니다. 커넥션이 맺어지면 서로 간에 주고받는 메시지들은 손상되거나 순서가 바뀌지 않고 안전하게 전달된다. TCP 커넥션은 발신지(클라이언트)의 IP와 Port, 수신지(서버)의 IP와 Port 이렇게 4가지 값으로 식별합니다. > 💡 `__ 1-1. 데이터 통신을 하기 위한 패킷 교환 방식과 TCP/IP 데이터 단위 패킷 전송 방식의 패킷은 데이터를 효율적으로 전송하기 위해 데이터를 작은 조각으로 분할하고 분할된 조각에 헤더를 붙여 캡슐화 데이터를 의미합니다. 그리고 이 패킷을 라우터가 라우팅을 통해 송신 호스트에서 수신 호스트까지 전송하는 것이 패킷 교환 방식입니다. ![](https://velog.velcdn.com/images/illi0n/pos

2023년 9월 10일
·
0개의 댓글
·
post-thumbnail

TCP/IP - TCP, 네트워크 명령어

TCP Header * 제어 플래그 * CWR / ECE: 혼잡 제어 URG: Urgent Pointer 에 값이 있으면 1, 없으면 0, 순서 상관없이 먼저 전송됨 (강사님: Urgent Pointer - 데이터 일부분에 긴급 데이터 위치를 마킹해주는 것. 먼저 전송되지는 않음. 우선 처리되도록 우선순위를 높이는 정도?) ACK: AcKnowledgement Number 필드에 유효한 값 있으면 1, 0 이면 Acknowledgement Number 필드 무시. TCP 연결 시작후 항상 1 임 PSH

2023년 9월 1일
·
0개의 댓글
·

[CS] TCP/IP, 3-way , 4-way hand shake란?

뜻부터 알자! TCP(Transmission Control Protocol) 데이터의 전송을 보장하며 패킷 처리 순서를 일치시키고, 흐름 제어 및 혼잡 제어를 수행하는 연결 지향적인 프로토콜 정확한 전송을 위해 사전에 세션을 수립하는 과정 IP(Internet Protocol) 네트워크 간의 라우팅과 비연결성 전송에 이용 데이터 전송을 지키기 위한 규약 3-way handshaking TCP의 연결 수립 과정 세 번의 과정을 통해 내 신호를 받을 수 있는지 확인하는 과정 클라이언트가 서버에 SYN을 전송 SYN : Synchronize Sequence Number의 약자, 랜덤한 숫자로 구성 클라이언트 : SYN_SENT 서버 : LISTEN 서버가 요청을 받고 다시 SYN + ACK 전송 클라이언트 : **SYN_S

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

[TCP] 4-way Handshake

개요 요즘 열심히 CS에 대해서 공부하는 와중에 조금 궁금한 사항이 생겼기에 해당 글을 작성하게 됐다. TCP에서 3-way Handshake에서는 3가지의 절차를 진행한다는 것은 명확하게 인지하였지만, 왜 연결 종료 시에는 4-way Handshake에 방법을 고수 하는 것이냐는 의문이다. 4-way Handshake에 대해서 먼저 TCP에서의 연결 종료를 명확하게 짚고 넘어가야 한다. 연결 종료를 할 때도 특정한 과정을 거쳐서 연결이 종료해야 한다는 것은 조금만 검색해도 알고 있을 것이다. 하지만 중요한 점은 왜 특정 과정을 거쳐야 한다는 점이다. 그냥 연결을 끊어버리면 한쪽에서 일방적으로 끊어버린 경우이기에 다른 한쪽은 연결이 끊어졌는지 알 방법이 없다. 그렇기에 연결을 종료하기 전에 다 처리하지 못한 데이터가 있을 수도 있기 때문에 양쪽이 다 정상적으로 연결을 종료할 준비가 되었는지를 확인하는 과정이 필요한 것이다. 그렇기에 반드시 4번의 통신 과정을 거쳐

2023년 7월 19일
·
2개의 댓글
·

[네트워크] TCP 3-Way Handshake & 4-Way Handshake

TCP란 Transmission Control Protocol 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 신뢰성을 중시하는 연결 지향적인 프로토콜 신뢰성 있는 전송을 위해 여러 기능을 제공함 -> 데이터의 세그먼트화, 순서 제어, 흐름 제어, 오류 검출 및 복구 신뢰성은 높지만 이로 인해 TCP의 속도는 느리다 TCP는 3-way handshaking으로 연결을 설정하고 4-way handshaking으로 연결을 해제함 TCP는 전이중(Full-Duplex) 방식을 통해 양쪽 방향으로 동시에 데이터를 주고받을 수 있음 웹 브라우징, 이메일, 파일 전송, 원격 접속 등 데이터의 안정적인 전송을 보장하기 위해 사용됨 UDP란 User Datagram Protocol 데이터를 데이터그램 단위로 처리하는 프로토콜 ( datagram : 독립적인 관계를 지니는 패킷) 비연결형 프로토콜로, 신뢰성보다는 단순한 데이터 전송을

2023년 7월 14일
·
1개의 댓글
·
post-thumbnail

[CS-네트워크] TCP 3 way handshake & 4 way handshake

3-way Handshake란, 연결 성립 3-way Handshake는 데이터 전송 전에 송신자와 수신자 사이에 세션을 수립하는 과정이다. 총 3단계를 걸쳐서 진행된다. Step 1 클라이언트는 서버에 연결을 요청하는 SYN패킷을 보낸 후 서버의 응답을 기다리며 SYN_SENT 상태를 유지하고, 서버는 클라이언트의 요청을 받기 전에는 Wait for client상태를 유지한다. Step 2 서버는 클라이언트가 보낸 SYN패킷을 받고, SYN_RECEIVED상태가 되고 SYN+ACK를 보내 응답한다. > 📍 ACK : 요청을 수락한다는 뜻, SYN : SYN flag가 설정된 패킷 Step3 서버의 응답을 받은 클라이언트는 다시 서버에 ACK패킷으로 응답하고

2023년 6월 29일
·
0개의 댓글
·
post-thumbnail

TCP 통신계층 + JavaScript 기본지식 2

Transport Layer Transport Layer(전송 계층)은 End Point 간 신뢰성 있는 데이터 전송을 담당하는 계층입니다. 데이터를 순차적이고 안정적으로 전달해주며, 포트 번호에 해당하는 프로세스에 데이터를 전달합니다. 데이터의 순서를 보장하고, 송수신 과정에서 메모리 한계로 데이터가 누락되거나 통신 속도가 느려지는 것을 방지합니다. TCP(Transmission Control Protocol) 전송 계층에서 대표적인 프로토콜이 TCP입니다. 이를 통해 신뢰성 있는 데이터 통신이 가능하게 해준다고 할 수 있습니다. 커넥션을 연결할 때, TCP 헤더 안에 있는 9개의 플래그 비트를 사용합니다. > flag, 플래그 : 프로그래밍에서 특정 동작을 수행할지 말지를 결정하는 1비트 변수를 의미합니다. true/false와 같이 2가지의 약속된 신호를 남기기 위해서 사용합니다. 3-way handshake TCP에서 커넥션 연결을 위해서 쓰리

2023년 5월 20일
·
0개의 댓글
·
post-thumbnail

리눅스 환경에서 다중 클라이언트 채팅 시스템 구현

학부 시절 시스템프로그래밍 시간에 소켓 통신에 대한 실습을 진행했었다. 면접 준비를 하며 복습을 하는데 기억이 안 나는 부분이 많아 다시 정리를 해보려고 한다. 리눅스 환경(Mac OS)과 C 언어로 작성을 하였으며 소스 코드는 좋은 코딩님의 블로그를 참조하였다. 링크는 레퍼런스에 달아놓음 ㅎㅎ 소켓 통신 과정 설계 연결 대기 연결

2023년 5월 6일
·
1개의 댓글
·
post-thumbnail

HTTP 문제점 및 wireshark

http사이트에서 로그인을 하거나, 등등 업무를 볼 때 한번쯤 브라우저 창에서 위험할 수 있다는 경고를 받은 적이 한번 쯤은 있을 것이다. 이유는 모른 채 그런가 보다~ 하고 넘어갔는데 오늘 wireshark를 통해 http 통신을 모니터링 해보면서 왜 위험한지 배우게 되었다. > > 🦈 wireshark란 ? > : 네트워크 간의 통신을 모니터링 해주는 도구로 오픈 소스 패킷 분석 프로그램 즉, 데이터를 주고 받을 때 데이터가 담긴 pcap(Packet Capture)이 존재하는데, 이 pcap을 확인하는 도구

2023년 4월 26일
·
0개의 댓글
·
post-thumbnail

4-way-handshake 에 대해 설명해주세요.

4-way-handshake 과정 TCP 프로토콜에서 4-way-handshake 과정은 TCP 연결 해제 과정으로, 클라이언트와 서버 간에 신뢰성 있는 연결을 해제하기 위해 4번의 패킷 교환이 이루어진다. 클라이언트는 연결을 종료하고자 FIN 패킷을 보낸다. 이 패킷에는 클라이언트가 전송한 모든 데이터의 난수의 시퀀스 번호가 포함된다. 서버는 FIN 패킷을 받고, 클라이언트에게 ACK 패킷을 보낸다. 이때, 서버는 아직 전송되지 않은 데이터가 있다면 이를 전송한다. ACK 패킷에는 FIN 패킷에 포함된 시퀀스 번호 + 1 의 값이 포함되어 있다. 서버에서 클라이언트에게 보내야 할 모든 데이터를 전송이 완료되면, FIN 패킷을 클라이언트에게 보낸다. FIN 패킷에는 난수의 시퀀스 번호가 포함된다. 클라이언트는 서버의 FIN 패킷을 받고, 서버에게 ACK 패킷을 보낸다. ACK 패킷에는 FIN 패킷에 포함된 시퀀스 번호 + 1 의 값이 포함되어 있

2023년 4월 13일
·
0개의 댓글
·
post-thumbnail

3-Way Handshake & 4-Way Handshake

❓ TCP의 특징 3-Way Handshake를 보기전에 TCP의 특징에 대해서 알아보자 TCP의 특징 데이터의 순서를 보장 신뢰성 있는 데이터를 전송 데이터 흐름 제어 및 혼잡 제어 연결형 서비스로 연결이 성공해야 통신이 가능 연결이 성공해야 통신이 가능 Client와 Server가 논리적 으로 연결된 상태를 말하는것. 이런 논리적인 연결을 하기 위해서 3-Way Handshake 과정을 이용하는것. 3-Way Handshake 과정을 통해 논리적으로 연결이 되었다면, 클라이언트와 서버가 데이터를 주고받을 준비가 되어있다는것을 의미함. 🤝 3-Way Handshake tcp에서 클라이언트와 서버가 서로 연결을 확인하는 과정을 의미함.

2023년 4월 11일
·
0개의 댓글
·

[ 230407 TIL ] UMC 서버 스터디 - 데이터베이스, 관계형데이터베이스 | TCP 3-way handshake, 4-way handshake | REST

데이터베이스는 어떤 도메인에 필요한 데이터를 모아서, 구조화 시켜놓은 모음이라 할 수 있다. 구조는 열과 행으로 이루어진 테이블, Key-Value, Documentation 등등 다양한 구조일 수 있겠다. DB는 여러 사람이 공유하고 사용할 목적으로 관리되는 정보의 모음이다.

2023년 4월 7일
·
0개의 댓글
·
post-thumbnail

TCP 연결 설정 및 종료 과정과 흐름제어/혼잡제어/오류제어

1. TCP(Transmission Control Protocol)란 무엇인가 IT에 종사하는 사람들이라면* 네트워크 7계층(OSI 7 LAYER)이라는 것을 적어도 1번은 들어보았을 것입니다. 이 중에 4계층인 전송 계층(Transport Layer)은 종단간의 데이터 교환을 신뢰성있게 전송할 수 있게 해주는 계층입니다. 여기서 말하는 종단*이란 사용자와 사용자가 될 수도 있고, 서버와 클라이언트가 될 수도 있습니다. 즉 데이터를 주고 받는 상호관계가 되는 모든 인터넷 상의 관계입니다. >TCP(Transmission Control Protocol)란 네트워크 계층의 4계층 프로토콜로 종단 간의 신뢰성있는 데이터 송·수신을 위한 하나의 전송 방식입니다. 여담으로는 TCP가 개발된 것은 바야흐로 1960년대 미국과 소련의 냉전시절이 한창일 때 미국에서 아무것도 존재하지 않아도 신뢰성있는 통신을 하기위해 개발한 프로토콜이라고 합니다. 그

2023년 4월 1일
·
1개의 댓글
·
post-thumbnail

[Nginx] Upstream 서버의 KeepAlive 를 조정해보기

시작에 앞서 지난 포스팅 [Nginx] 로드밸런싱 환경을 구축해 트래픽 분산시키기 (feat. 무중단배포) 에서는 Nginx 를 웹서버로 배치하고, 뒷단에다 WAS 서버로 스프링부트 애플리케이션을 구동시켰습니다. 이렇듯 실질적으로 외부에 서비스하는 웹서비스들을 대부분 앞단에 WS 를 두게 되는데, 이런 Nginx 등의 웹서버에 KeepAlive 들 별도로 설정해주지 않는다면 성능 저하가 될 수도 있다는 사실 아

2023년 1월 30일
·
0개의 댓글
·
post-thumbnail

[네트워크] TCP 3-Way Handshake & 4-Way Handshake

TCP 3-way Handshake TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다. TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. Client > Server : TCP SYN Server > Client : TCP SYN ACK Client > Server : TCP ACK 이러한 절차는 TCP 접속을 성공적으로 성립하기 위하여 반드시 필요하다. TCP의 3-way Handshake 역할 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다. 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을 수 있도록 한다. ![](https://velog.

2023년 1월 29일
·
0개의 댓글
·
post-thumbnail

12/21 배포(2) 와 http,https

배포 두번째시간. 이번에는 http접속시에 주의 요함이라고 뜨는 이유가 무엇인지에 대해서부터 시작하였다. 이 주의요함이 자물쇠형태로 바꾸는 것을 하기전에 이것이 왜 주의 요함이고, 왜 https를 사용해야하는지에 대해 알기위해서는 우선 네트워크부터 알아야한다. 먼저 와이어 샤크라는 도구를 이용해 데이터가 어떻게 주고받아지는지에대해 먼저 보았다. 해당도구를 직접 이용한것이 아니라 진행하는것을 보며 설명을 들었다. 데이터가 왔다갔다하는것을 볼 수 있는데,이런것들 하나하나를 페킷 이라고 부른다고 하셨다. 와이어 샤크 위쪽 상단에 내 아이피를 ip addr == 내 아이피 이런식으로 적어 검색하면 내 아이피와 같은애들만 추려 간편히 볼 수 있다. 사진이 생각조다 잘 안보이는데, 첫번째로 흰색 상자로

2022년 12월 21일
·
0개의 댓글
·

3-way handshake, 4-way handshake란?

3-way handshake > TCP에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다. 3-way handshake 과정 SYN(Synchronization) : 연결요청, 세션을 설정하는데 사용되며 초기에 시퀀스 번호를 보냄 ACK(Acknowledgement) : 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함하여 전송 **1. Client

2022년 11월 28일
·
0개의 댓글
·
post-thumbnail

[CS - 네트워크] TCP & UDP, 3 Way Handshake, 4 Way Handshake

질문의 핵심 TCP와 UDP의 차이는? TCP 연결 설정 과정(3 way)과 연결 종료 과정(4 way)의 단계가 차이나는 이유는? Server에서 FIN 플래그를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면? 1. TCP TCP(Transmission Control Protocol)란? > 인터넷상에서 데이터를 메세지의 형태(세그먼트 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다. TCP는 애플리케이션에게 신뢰적이고 연결지향성인 서비스를 제공한다. TCP는 일반적으로 IP와 함께 사용되며, IP는 배달을, TCP는 패킷의 추적 및 관리를 한다. 특징 3 Way Handshaking으로 연결을 설정, 4 Way Handshaking으로 연결을 해제한다. 흐름 제어 및

2022년 10월 13일
·
0개의 댓글
·

[CS 공부] 22.10.06

운영체제 역할 시스템 자원 관리 각 프로세스에게 하드웨어의 자원을 할당하고 관리한다. 응용 프로그램 관리 권한 관리 응용프로그램을 사용하는 사용자 관리 네트워크 관리 다른 기계와의 통신 지원 사용자 관리 OS 사용자별 권한 관리 OSI 7계층 물데네전세표응 물리계층 - 데이터를 단순히 전기적 신호로 주고받는 역할 데이터링크계층 - 물리 계층으로 송수신되는 정보를 안전하게 전달되도록 도와주는 역할, Mac주소를 통해 통신, 오류 + 흐름 제어 필요 네트워크 - IP경로 지정, 경로에 따라 패킷 전달, 라우팅, 흐름제어, 오류제어 전송 - TCP, UDP프로토콜로 통신 활성화 세션 - 논리적 연결 담당 표현 - 압축, 암호화 응용 - 응용서비스 (HTTP, FTP) 3-way handshake T

2022년 10월 5일
·
0개의 댓글
·
post-thumbnail

URL을 입력하면 벌어지는 일

URL을 입력하면 벌어지는 일 URL을 웹 브라우저의 주소창에 입력한다. 웹 브라우저가 URL을 해석하고, 문법에 맞지 않으면 기본 검색엔진으로 검색한다. 문법에 맞으면 URL의 호스트 부분을 인코딩한다. HSTS(HTTP Strict Transport Security) 목록을 확인하고 있으면 HTTPS로, 없으면 HTTP로 요청한다. DNS(Domain Name Server)조회 브라우저/로컬 캐시 확인해서 도메인에 해당하는 IP가 있는지 확인한다. 없으면 OS에게 DNS 서버에 요청하라고 지시한다. DNS 서버는 해당 도메인에 해당하는 IP를 돌려준다. TCP 소켓을 열고 3-way handshake로 연결을 설정한다. HTTPS 요청이라면 TLS(Transport Layer Security) handshake 과정을 통해 세션키를 생성한다. 세션이 유지되는 동안 서버에게 요청하고 응답을 받는 과정을 반복한다. 응답

2022년 10월 2일
·
0개의 댓글
·