본문 바로가기
CS/네트워크

[CS] TCP의 연결성립 : 3-Way Handshake

by Johnny's 2023. 10. 18.

TCP의 연결성립 : 3-Way Handshake

TCP의 연결성립은 다음과 같은 3개의 과정을 거쳐 성립
1. SYN 단계 : 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다.
2. SYN + ACK 단계 : 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다.
3. ACK 단계 : 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다.

 

[참고] ISN : TCP(Transmission Control Protocol) 기반 데이터 통신에서 각각의 새 연결에 할당된 고유한 32비트 시퀀스 번호를 나타냄. TCP 연결을 통해 전송되는 다른 데이터 바이트와 충돌하지 않는 시퀀스 번호를 할당하는 데 도움이 됨

- SYN : synchronization의 약자, 연결 요청 플래그

- ACK : acknowledgement의 약자, 응답 플래그

 

ex) 와이어샤크로 보는 TCP 연결

  

클라이언트와 서버의 상태

TCP 연결을 하면서 클라이언트는 closed, syn-sent, established가 되며 serve 는 closed, listen, syn_received, established 상태가 됨

 

 

이러한 서버와 클라이언트 간의 연결 설정 과정이 있기 때문에 'TCP는 신뢰성이 있다' 라고 하며 이러한 과정이 없는 'UDP는 신뢰성이 없다' 라고 말함

 

listen

서버는 클라이언트의 연락을 기다리는 상태, 이를 기반으로 서버 메서드의 이름이 결정

 

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
    res.send('Hello World!')
})

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

 

* 참고

- CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 -인프런

댓글