unlocked, shared, reserved, pending, exclusive (unlocked 를 제외하고 모두 제각각 Lock 있음)
unlocked : database에 연결, begin transaction으로 Tr 시작 상태
shared : DB에서 read 하려고 하는 모든 세션이 획득해야 함 - 다중 세션에서 read 가능하고, shared 락은 활성화 되어 있지만 어떤 세션도 wrtie는 안됨
reserved : wrtie 하고자 하는 세션은 reserved 획득해야 함. 다른 read 세션은 방해하지 않으며, 새로 접근 하는 read 세션도 허용한다. 적용하는 변경 내역은 메모리에 캐시 된다.
exclusive : reserved 락을 획득한 세션에서 변경 내역(or Tr)을 commit 하려면 획득해야 함
pending : reserved 가 exclusive 를 획득하기 위해서는 pending 을 먼저 획득해야 함 - pending lock을 획득하면 새로운 shared lock 제한하고, shard lock들이 모두 끝나길 기다린다. 기다림이 끝나면 pending -> exclusive로 전환되면서 모든 사항 반영한다.
TCP(Transmission Control Protocol)는 3-WAY Handshake 방식을 통해 두 지점 간에 세션을 연결하여 통신을 시작 하고 4-WAY Handshake를 통해 세션을 종료하여 통신을 종료 합니다.
이러한 세션연결과 해제 이외에도 데이터를 전송하거나 거부, 세션 종료 같은 기능이 패킷의 FLAG 값에 따라 달라지게 되는데, TCP FLAG는 기본적으로 6 가지로 구성됩니다.
FLAG 순서
+-----+-----+-----+----+-----+----+
| URG | ACK | PSH | RST | SYN | FIN |
+-----+-----+-----+----+-----+----+
각각 1비트로 TCP 세그먼트 필드 안에 cONTROL BIT 또는 FLAG BIT 로 정의 되어 있다.
SYN(Synchronization:동기화) - S : 연결 요청 플래그
TCP 에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 초기에 시퀀스 번호를 보내게 된다.
ACK(Acknowledgement) - Ack : 응답
상대방으로부터 패킷을 받았다는 걸 알려주는 패킷, 다른 플래그와 같이 출력되는 경우도 있습니다. 받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냅니다.(일반적으로 +1 하여 보냄) ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송한다.
RST(Reset) - R : 제 연결 종료 재설정(Reset)을 하는 과정이며 양방향에서 동시에 일어나는 중단 작업이다. 비 정상적인 세션 연결 끊기에 해당한다. 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용한다.
PSH(Push) - P : 밀어넣기
TELNET 과 같은 상호작용이 중요한 프로토콜의 경우 빠른 응답이 중요한데, 이 때 받은 데이터를 즉시 목적지인 OSI 7 Layer 의 Application 계층으로 전송하도록 하는 FLAG. 대화형 트랙픽에 사용되는 것으로 버퍼가 채워지기를 기다리지 않고 데이터를 전달한다. 데이터는 버퍼링 없이 바로 위 계층이 아닌 7 계층의 응용프로그램으로 바로 전달한다.
URG(Urgent) - U : 긴급 데이터 Urgent pointer 유효한 것인지를 나타낸다. Urgent pointer란 전송하는 데이터 중에서 긴급히 전당해야 할 내용이 있을 경우에 사용한다. 긴급한 데이터는 다른 데이터에 비해 우선순위가 높아야 한다. EX) ping 명령어 실행 도중 Ctrl+c 입력
FIN(Finish) - F : 연결 종료 요청 세션 연결을 종료시킬 때 사용되며 더이상 전송할 데이터가 없음을 나타낸다.
그 외
Placeholder 패킷의 플래그에 SYN, FINISH, RESET, PUSH등의 플래그가 설정 되어 있지 않은 경우 이 플래그가 세팅된다. 이 플래그는 ACK플래그와 함께 사용되는 경우도 있다.
D = Currently downloading (interested and not choked) 현재 다운 중(연결되어 있고 차단되지 않음)
d = Your client wants to download, but peer doesn't want to send (interested and choked) 당신의 클라이언트(사용 중인 토런트 프로그램)은 다운로드를 원하나 상대가 보내려 하지 않음(연결되어 있으나 차단됨)
U = Currently uploading (interested and not choked) 현재 업로드 중(연결되어 있고 차단되지 않음)
u = Peer wants your client to upload, but your client doesn't want to (interested and choked) 상대가 당신한테 업로드를 원하나 당신의 토런트 프로그램은 그러려 하지 않음(연결되어 있으나 차단됨)
O = Optimistic unchoke 양호한 소통
S = Peer is snubbed 상대가 기가 꺾임
I = Peer is an incoming connection 상대가 연결되고 있음
K = Peer is unchoking your client, but your client is not interested 상대가 당신의 클라이언트를 차단하지 않고 있으나 당신의 클라이언트가 연결되지 않음
? = Your client unchoked the peer but the peer is not interested 당신의 클라이언트가 상대를 차단하지 않으나 상대가 연결되지 않음
X = Peer was included in peerlists obtained through Peer Exchange (PEX) 피어 교환을 통해 피어 목록에 포함됨
H = Peer was obtained through DHT. 상대가 DHT를 통함
E = Peer is using Protocol Encryption (all traffic) 상대가 프로토콜 암호화를 사용:모든 트래픽
e = Peer is using Protocol Encryption (handshake) 상대가 신호 변경을 통해 프로토콜 암호화
L = Peer is local (discovered through network broadcast, or in reserved local IP ranges) 상대가 로컬에 위치(네트워크 방송이나 예비 로컬 아이피 영역에 있음)
trunk - 기본적으로 개발을 시작할 때 사용하는 디렉토리(소스의 주 개발 작업을 진행하는 폴더) - 모든 프로그램 개발 작업은 trunk 디렉토리에서 부터 시작 - main, mainline, production의 의미로 사용됨
brankches - trunk 에서 뻗어져 나온 나뭇가지(소스의 실험적인 작업을 진행하는 폴더, 소스의 현재 버전을 유지보수 하고, 현재 버전을 기반으로 차기 버전을 개발할 경우 이 폴더 이용) - trunk 디렉토리에서 프로그램을 개발하다보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 개발하는 경우. - 프로젝트 안의 작은 프로젝트 - release 버전과 유지보수 버전을 분리하고 싶을 때 사용 - customizing이나 hot fix 목적으로 분리하여 수정함 - 수정이 계속해서 발생하다가 궁극적으로는 trunk에 merge 되는 것이 일반적임
tags - 꼬리표의 개념. - 현재 릴리즈된 소스를 관리하기 쉽게 따로 보관하는데 사용. 즉, 개발을 위한 것이 아니라 보관을 위한 것이기 때문에 export만 해야 한다. 체크아웃하여 커밋 할 경우 경고 메시지가 출력된다. - 프로그램을 개발하면서 정기적으로 릴리즈 할 때 0.1, 0.2, 1.0 식의 버전의 소스를 따로 저장하는 공간 - 한번 만들면 수정하지 않음 - releases, snapshots, baselines의 의미로 사용됨