TCP 연결의 특징
- 1:1 연결을 할 수 있다. (1명의 sender, 1명의 receiver)
- 신뢰성이 높고, in-order byte stream으로 순서가 바뀌지 않는다
- 한 connection에서 양방향으로 보낼 수 있다.
- connection-oriented 연결 지향
- MSS(maximum segment size)가 있어서 엄청 큰 이미지 파일을 tcp로 보낸다고 해도, mss 단위로 쪼개져서 보내진다.
TCP Segment의 구조
TCP Segment는 위처럼 다양한 값들을 저장한다.
- Port Number : 가장 위에는 어디에서 왔고, 어디로 가는 지를 지정
- Segment sequence number : bytestream에서의 byte 수.
- MMS가 1000인 경우, 1번째 segment의 sequence number은 0, 2번째 segment는 1000, 3번째 segment는 3000
- ACK number: 다음에 받아야하는 Sequence number
다음은 위 Sequence number과 ACK number의 예시이다.
Host A와 B가 TCP 연결을 하고 데이터를 주고 받고 있다고 할 때,
1.Host A가 B에게 data 'C'를 B에게 보냄.
- 현재 Segment number인 42와, 다음에 받아야하는 Segment number인 ACK = 79를 함께 보낸다
2. Host B가 데이터 C를 받고 잘 받았다고 echo를 보내준다.
- 현재 Segment number인 79와 다음에 A로부터 받아야하는 Segment Number인 43(42+1)을 함께 보낸다.
.....
전송의 문제가 생겨서 재전송이 일어나는 경우
B가 데이터를 잘 받았는데, ACK을 A에게 보낸게 잃어버리게 된 상황
ACK이 오지 않았으니 Host A는 다시 데이터를 보내고, 다음 번 ACK은 A에게 잘 전달되어 해결된다.
너무 빨리 timeout이 걸려있어서, 사실 data들이 잘 도착했는데, ACK이 제 시간 안에 도착하지 못해 유실되게 된다.
ACK=120이라는 가장 마지막 ACK만 다시 보내줌으로써 잘 도착했음을 알려줘서 해결한다.
TCP 3-way Handshake 연결 과정
- 서버는 Connection을 위해 LISTEN 중인 상태이다.
- Connection 요청 - Client는 서버와 연결하기 위해 TCP SYN 메세지를 보낸다.
- 서버는 연결할 수 있다고 SYN ACK 메세지를 보낸다.
- 클라이언트는 SYN ACK를 받고, SYNACK에 대한 ACK를 서버에게 보낸다.
- 실제로는 여기서 data를 함께 보내서 전송의 개수를 줄인다고 한다.
'‡Computer Science ‡ > º 네트워크' 카테고리의 다른 글
[네트워크] Application 7계층 - HTTPS (Hypertext Transfer Protocol Secure) (0) | 2024.07.18 |
---|---|
[네트워크] DNS(Domain Name System) (0) | 2024.07.15 |
[네트워크] OSI 7계층 모델 (0) | 2024.07.12 |
[네트워크] 대역폭(Bandwidth)이란? (0) | 2024.07.12 |