1.TCP는 3 way handshake를 통해 연결한다.
(1)클라이언트에서 서버 접속 요청 SYN 패킷 전송
(2)SYN을 받은 서버는 요청수락을 알리는 ACK와 SYN 패킷 전송
(3)클라이언트에서 ACK 패킷 전송(연결)
SYN는 Synchronize로 동기화 요청을 나타내며
ACK는 Acknowledgment로 인지했다는 사실을 나타낸다.
서버 너 살아있니? 라고 묻자
서버가 나는 정상 작동중인데 물어본 너도 지금 정상 작동중이니? 라고 묻고
클라이언트가 나도 정상 작동중이야! 라고 대답하고 소통하는 것이다.
2.TCP의 연결 종료는 4 way handshake를 사용한다.
(1)클라이언트에서 서버 종료 요청 FIN 플래그 전송
(2)FIN을 받은 서버는 요청수락을 알리는 ACK 전송
(3)서버에서 종료처리 완료 전에는 close wait 상태로
데이터 전송 후 클라이언트에게 종료하겠다는 FIN 플래그 전송
(4)클라이언트에서 종료 수락 의미의 ACK 패킷 전송
(5)서버는 ACK 패킷 받은 후 종료된다.
(6)3번에서 전송중인 데이터 도착 전 까지 time wait 상태로 대기
모든 데이터 받은 후 클라이언트는 종료된다.
FIN은 종료를, ACK는 위에 언급한 인지를 나타낸다.
클라이언트가 이별(FIN)을 통보하면
서버는 이별에 동의(ACK)하며 클라이언트와 추억이 쌓인 물건(data)을 보낸 후
클라이언트에게 재차 이별(FIN)을 통보하고
클라이언트가 그래 이제 진짜 끝이야! 라며 답장을 보내면
서버는 마음을 정리(server closed)하고
클라이언트는 서버가 보낸 물건(data)을 정리한 후
클라이언트도 마음을 정리한다(client closed)
(1).백준 6321 IBM 빼기 1은 모든 글자를 다음 알파벳으로 변경하는 문제였다.
문자열들을 다루는 요구치가 많아 처음 풀면 까다로울 수 있겠지만
String.fromCharCode((input[i][j].charCodeAt()-64)%26 +65)를 통해
알파벳을 다음 글자로 변경시켰다. -65가 기준치로 +1 할때마다 한글자씩 오른쪽으로 이동한다.
let input = `2
HAL
SWERC`.split('\n')
let result = []
for(let i = 1 ; i < input.length ; i++){
let strs = []
strs.push(`String #${i}`)
let str = ''
for(let j = 0 ; j < input[i].length ; j++){
str += String.fromCharCode((input[i][j].charCodeAt()-64)%26 +65)
}
strs.push(str)
result.push(strs.join('\n'))
}
console.log(result.join('\n\n'))

'회고' 카테고리의 다른 글
| [취업준비일지] - 62 - 원티드 인턴십 2일차 (0) | 2022.12.21 |
|---|---|
| [취업준비일지] - 61 - 원티드 인턴십 1일차 (0) | 2022.12.20 |
| [취업준비일지] - 59 (0) | 2022.12.18 |
| [취업준비일지] - 58 (0) | 2022.12.17 |
| [취업준비일지] - 57 (0) | 2022.12.16 |
