https://www.youtube.com/playlist?list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi
위의 강의를 듣고 정리한 내용입니다
TCP를 이용한 통신과정
연결 수립 과정
TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해
>> 가장 먼저 수행되는 과정 << 이다
- 클라이언트가 서버에게 요청 패킷을 전송
- 서버가 클라이언트의 요청을 받아들이는 패킷 전송
- 클라이언트는 이를 최종적으로 수락하는 패킷을 전송한다
-> 위의 3가지 과정을 3Way Handshake라고 부른다
TCP 3Way Handshake
- 연결 수립을 하기 위한 통신이다
1. 요청 패킷 전송
클라이언트 -------------------------------> 웹서버
Eth | IPv4 | TCP |
요청 TCP
df a5 | 00 50 | |||
00 00 00 64 | ||||
00 00 00 00 | ||||
5 | 0 | 02 | 20 00 | |
00 | 00 | 00 | 00 |
-> Syn 플래그가 세팅되며, Ack, Seq번호가 세팅되어 전송된다
Flag : SYN
S:100 A:0
*수립하는 과정이기 때문에 TCP의 페이로드는 없다
2. 요청 수락 패킷 전송
웹 서버 -------------------------------> 클라이언트
Eth | IPv4 | TCP |
응답 TCP
00 50 | df a5 | |||
00 00 07 d0 | ||||
00 00 00 65 | ||||
5 | 0 | 12 | 20 00 | |
00 | 00 | 00 | 00 |
-> 출발지와 요청지 포트 변경
-> SYN와 ACK가 같이 세팅되어있다
Flag : SYN + ACK
S:2000 A:101
3. 최종 수락 패킷 전송
클라이언트 -------------------------------> 웹서버
Eth | IPv4 | TCP |
Flag : ACK
S:101 A:2001
*보안에 관심이 있다면 Seq와 Ack의 값을 알아야 한다
1의 과정에서 S(Seq):100, A(Ack):0으로 세팅이 될 때
받는쪽에서 처음 전송한 번호로 동기화를 한다
받은 SEQ 번호 + 1을 하여 ACK 번호를 생성하고 (==101)
처음 보내는 경우 랜덤한 SEQ 번호를 생성하여 응답한다 (==2000이라 가정)
이 번호를 받은 클라이언트의 ACK 번호는 받은 SEQ 번호 + 1로 생성되며 (==2001)
SEQ 번호는 답장을 보내는 것이기 때문에 받은 ACK 번호로 구성된다 (==101)
> 위의 과정으로 통신을 할 때
연결 수립 후 데이터 통신을 할 때 클라이언트가 요청을 보내야 하는데,
클라이언트가 아닌 다른 누군가가 이 값을 계산하여 요청을 보내게 되면,
서버는 요청한 다른 누군가와 통신을 하게 된다
-> 세션 하이잭킹 공격
'CS지식 > 네트워크' 카테고리의 다른 글
NAT와 포트포워딩 | TIL_141 (0) | 2022.09.07 |
---|---|
TIL 정리_130(TCP 전송, 상태) (0) | 2022.08.05 |
TIL 정리_128(TCP 구조와 플래그) (0) | 2022.08.01 |
TIL 정리_127(UDP) (0) | 2022.07.29 |
TIL 정리_126(4계층 이론) (0) | 2022.07.27 |