Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- SSAFY
- Spring
- 전송계층
- Dynamic Programming
- 개발공부
- IP
- 코딩테스트
- cs공부
- 싸피
- Lan
- 자바
- 코딩공부
- DP
- 개발자
- 알고리즘공부
- BAEKJOON
- 스프링
- 프로토콜
- 네트워크
- 백준
- 구현
- 서버
- 클라이언트
- 다이내믹프로그래밍
- Java
- 네트워크모델
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- TCP
- 정렬
Archives
- Today
- Total
오늘 하루, develop
#14. [4계층] TCP 통신과정 - 3 way handshake, 데이터 송수신 본문
♦ 소개
TCP 통신과정에 대해 알아보자!
♦ STEP1. 연결 수립 과정 ( 3 Way Handshake )
TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
1) 클라이언트가 서버에게 요청 패킷을 보내고
2) 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
3) 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.
위의 3개 과정을 3 Way Handshake라고 부른다.
1) 클라이언트 -> 서버 : 요청 패킷
- 출발지 포트는 아무거나, 목적지 포트는(80번. 웹이니까)
- S flag 설정됨
- 아래 2개 번호로 두 노드가 동기화
- Sequence Number : 100 (랜덤한 값. 클라이언트 마음)
- Acknowledgment : 0
2) 서버 -> 클라이언트 : 요청을 받아들이는 패킷
- 출발지 80, 목적지 포트는 클라이언트가 보냈던 포트
- A, S flag 설정됨 (Syn + Ack)
- Sequence Number : 2000 (랜덤한 값. 서버 마음)
- Acknowledgment : 받은 Sequence 번호 + 1 ( 100 + 1 = 101 )
3) 클라이언트 -> 서버 : 최종 수락 패킷
- 출발지 포트는 아무거나, 목적지 포트는(80번. 웹이니까)
- A flag 설정됨
- Sequence Number : 받은 ACK 번호 (처음 보낼 때만 랜덤 값)
- Acknowledgment : 받은 Sequence 번호 + 1 ( 2000 + 1 = 2001 )
✅ Sequence Number, Acknowledgment는 보안상 중요
위와 같이 연결 수립 후 클라이언트가 요청을 보내는데, 이때 다른 사람이 이 두 숫자를 계산해서 알아낸 후 서버에 요청을 보낼 수 있음 (세션 하이재킹)
♦ STEP2. 데이터 송수신 과정
💡 TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙
1. 보낸 쪽에서 또 보낼 때는 SEQ 번호와 ACK 번호가 그대로다.
2. 받는 쪽에서 SEQ번호는 받은 ACK번호가 된다.
3. 받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터 크기
3 way handshake가 끝난 직후, 연결이 완료되었으므로 클라이언트가 다시 서버에게 패킷을 보낸다.
1) 클라이언트 -> 서버 : 데이터 요청
1번 규칙에 따라 S:101, A:2001
보내는 Data의 크기 = 100
2) 서버 -> 클라이언트 : 데이터 응답
2번 규칙에 따라 S:2001
3번 규칙에 따라 A: 201
3) 클라이언트 -> 서버 : 데이터를 잘 받았다는 답장
2번 규칙에 따라 S:201
3번 규칙에 따라 A: 2501
✅ 실습
- 와이어샤크 패킷 캡처
- 우클릭 Follow > TCP Stream : TCP가 서로 데이터 주고 받을 때 동기화한 내역을 뽑아서 봄
TCP 3 way handshake
3 way handshake가 끝나고, 클라이언트가 다시 서버에게 요청 보냄(이때부터가 찐 데이터 송수신)
출처
https://youtu.be/WseqBDo-j3Y?si=p8imAt9kITSdyyWp
'네트워크' 카테고리의 다른 글
#15. [4계층] TCP 상태전이도 (0) | 2024.05.07 |
---|---|
#13. [4계층] TCP 프로토콜이란? (개념, 구조) (0) | 2024.05.07 |
#12. [4계층] UDP프로토콜이란? (0) | 2024.05.07 |
#11. [4계층] 포트번호의 개념, 분류, 확인 방법 (0) | 2024.05.07 |
#10. [3계층] 패킷 전송과정 (라우팅테이블, IPv4조각화) (0) | 2024.05.07 |